)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"34cab3dea326a5a72092b4957fd744b4bed64afc","unresolved":false,"context_lines":[{"line_number":12,"context_line":"allowing users to resize the VMs while they are still running."},{"line_number":13,"context_line":"Because of this, no down time for the spawned instances is"},{"line_number":14,"context_line":"necessary when performing nova resize."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ic7b798da05ba89958b46f6e3f32ea1e788b6288e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a961159_ad81a4c4","line":15,"updated":"2014-12-12 10:37:06.000000000","message":"Please add here the implements blueprint line, to easily jump to the bp","commit_id":"8096684a9a592055c142dad6e1ced07bb2580105"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"4eb8873e908818f487a02cf81903c9080ab0c61d","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Hyper-V, KVM, VMWare and Xen allows users to resize both memory"},{"line_number":12,"context_line":"and local disks of the VMs while they are still running. Because"},{"line_number":13,"context_line":"of this, no down time is needed for the spawned instances when"},{"line_number":14,"context_line":"live resize is performed on the same host."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implements: blueprint instance-live-resize"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9a8ffd7b_194946b7","line":14,"updated":"2015-11-27 16:46:54.000000000","message":"You need an APIImpact flag","commit_id":"f57a1d3ff0d2649804876187b27051516223f4a6"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"661908b0a9529764c44e29eb997f1401fcecdc22","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Hyper-V, KVM, VMWare and Xen allows users to resize both memory"},{"line_number":12,"context_line":"and local disks of the VMs while they are still running. Because"},{"line_number":13,"context_line":"of this, no down time is needed for the spawned instances when"},{"line_number":14,"context_line":"live resize is performed on the same host."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implements: blueprint instance-live-resize"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9a8ffd7b_75802547","line":14,"in_reply_to":"9a8ffd7b_194946b7","updated":"2015-12-01 12:13:11.000000000","message":"Done","commit_id":"f57a1d3ff0d2649804876187b27051516223f4a6"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1bda2a4a7e89deec7fd021aa175fe7ad032e916e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"https://blueprints.launchpad.net/nova/+spec/instance-live-resize"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Hyper-V, KVM, VMWare and Xen allows users to resize both memory"},{"line_number":12,"context_line":"and local disks of the VMs while they are still running. Because"},{"line_number":13,"context_line":"of this, no down time is needed for the spawned instances when"},{"line_number":14,"context_line":"live resize is performed on the same host."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"3f4b6375_efafff91","line":11,"updated":"2017-10-19 20:57:24.000000000","message":"and PowerVM","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"https://blueprints.launchpad.net/nova/+spec/instance-live-resize"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Hyper-V, KVM, PowerVM, VMWare and Xen allows users to resize both memory"},{"line_number":12,"context_line":"and local disks of the VMs while they are still running. Because"},{"line_number":13,"context_line":"of this, no down time is needed for the spawned instances when"},{"line_number":14,"context_line":"live resize is performed on the same host."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":37,"id":"1f621f24_ffc4ca61","line":11,"range":{"start_line":11,"start_character":9,"end_line":11,"end_character":13},"updated":"2020-11-18 13:12:55.000000000","message":"to do this with libvirt you need to spawn the guest with a max cpu/memory larger then requested but you cant then migrate that to smaller host if i rememebr correctly so we have always had the issue of how to choose the make memroy you could live resize up too same for max cpus.\n\nlive resize up of disks is proably doable","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3408a47bd24c1d5d99878c78a973e4cacdebc477","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"https://blueprints.launchpad.net/nova/+spec/instance-live-resize"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Hyper-V, KVM, PowerVM, VMWare and Xen allows users to resize both memory"},{"line_number":12,"context_line":"and local disks of the VMs while they are still running. Because"},{"line_number":13,"context_line":"of this, no down time is needed for the spawned instances when"},{"line_number":14,"context_line":"live resize is performed on the same host."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":38,"id":"2f2c1071_0f587eaf","line":11,"range":{"start_line":11,"start_character":34,"end_line":11,"end_character":37},"updated":"2020-12-01 13:11:40.000000000","message":"XenAPI support is now removed from nova and the libvirt xen support is deprecated.","commit_id":"60d938b3cc8cdc408b9e52860c5649c876552a65"}],"specs/kilo/hyper-v-hot-resize.rst":[{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"1cb3ce368d37ad72b5ebe3230d9828e25fff7b33","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/hyper-v-hot-resize"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In Windows Hyper-V / Server 2012 R2 a new feature was introduced, allowing"},{"line_number":14,"context_line":"users to resize the VMs while they are still running."},{"line_number":15,"context_line":"Because of this, no down time for the spawned instances is necessary when"},{"line_number":16,"context_line":"performing nova resize."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_ad6c44d1","line":14,"updated":"2014-12-12 10:36:19.000000000","message":"please specify resize both memory and local disks, but not vcpus and specify that this refers to same host resize only.","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c375f99dd447b99a4cd70a45906dafead52926a6","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/hyper-v-hot-resize"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In Windows Hyper-V / Server 2012 R2 a new feature was introduced, allowing"},{"line_number":14,"context_line":"users to resize the VMs while they are still running."},{"line_number":15,"context_line":"Because of this, no down time for the spawned instances is necessary when"},{"line_number":16,"context_line":"performing nova resize."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_ad428465","line":14,"in_reply_to":"3a961159_ad6c44d1","updated":"2014-12-12 13:45:43.000000000","message":"Done","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"1cb3ce368d37ad72b5ebe3230d9828e25fff7b33","unresolved":false,"context_lines":[{"line_number":13,"context_line":"In Windows Hyper-V / Server 2012 R2 a new feature was introduced, allowing"},{"line_number":14,"context_line":"users to resize the VMs while they are still running."},{"line_number":15,"context_line":"Because of this, no down time for the spawned instances is necessary when"},{"line_number":16,"context_line":"performing nova resize."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_8da228fb","line":16,"updated":"2014-12-12 10:36:19.000000000","message":"Existing constraints remain, e.g. disk downsizing is not admitted below the watermark.","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c375f99dd447b99a4cd70a45906dafead52926a6","unresolved":false,"context_lines":[{"line_number":13,"context_line":"In Windows Hyper-V / Server 2012 R2 a new feature was introduced, allowing"},{"line_number":14,"context_line":"users to resize the VMs while they are still running."},{"line_number":15,"context_line":"Because of this, no down time for the spawned instances is necessary when"},{"line_number":16,"context_line":"performing nova resize."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_6d4c1c9f","line":16,"in_reply_to":"3a961159_8da228fb","updated":"2014-12-12 13:45:43.000000000","message":"I think this would best fit in the Problem description section, where I list all the restrictions.","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"5b3e581e8d8fc0a320074a393dba4c91c1e480c9","unresolved":false,"context_lines":[{"line_number":14,"context_line":"users to resize the VMs while they are still running."},{"line_number":15,"context_line":"Because of this, no down time for the spawned instances is necessary when"},{"line_number":16,"context_line":"performing nova resize."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_dc86a4da","line":17,"updated":"2014-12-12 08:58:13.000000000","message":"Copy this paragraph into the commit message.","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8e958a8f2348ae7aec7e311c8f886c86ec5af22b","unresolved":false,"context_lines":[{"line_number":14,"context_line":"users to resize the VMs while they are still running."},{"line_number":15,"context_line":"Because of this, no down time for the spawned instances is necessary when"},{"line_number":16,"context_line":"performing nova resize."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Problem description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_4d5040d4","line":17,"in_reply_to":"3a961159_dc86a4da","updated":"2014-12-12 10:35:11.000000000","message":"Done","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"1cb3ce368d37ad72b5ebe3230d9828e25fff7b33","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The main disadvantage for resizing an instance is the required down time"},{"line_number":22,"context_line":"necessary to do so. This spec will allow users to resize their Hyper-V"},{"line_number":23,"context_line":"instances without having to stop them first."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Use Cases"},{"line_number":26,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_2d8e9479","line":23,"updated":"2014-12-12 10:36:19.000000000","message":"This sounds like the suer has to stop the VM, which is not the case as the shutdown is part of the cold resize process.","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c375f99dd447b99a4cd70a45906dafead52926a6","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The main disadvantage for resizing an instance is the required down time"},{"line_number":22,"context_line":"necessary to do so. This spec will allow users to resize their Hyper-V"},{"line_number":23,"context_line":"instances without having to stop them first."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Use Cases"},{"line_number":26,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_77006234","line":23,"in_reply_to":"3a961159_2d8e9479","updated":"2014-12-12 13:45:43.000000000","message":"Done","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"1cb3ce368d37ad72b5ebe3230d9828e25fff7b33","unresolved":false,"context_lines":[{"line_number":26,"context_line":"----------"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"There are 2 use cases, depending on what OS the nova-compute service is"},{"line_number":29,"context_line":"running:"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"* Windows Hyper-V / Server 2012 R2: only the virtual hard disk hot resize is supported. This means that this feature is only appliable if the new target"},{"line_number":32,"context_line":"flavor requires only a bigger disk. Cold resize will be performed in any other"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_edfaccbb","line":29,"updated":"2014-12-12 10:36:19.000000000","message":"running on","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c375f99dd447b99a4cd70a45906dafead52926a6","unresolved":false,"context_lines":[{"line_number":26,"context_line":"----------"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"There are 2 use cases, depending on what OS the nova-compute service is"},{"line_number":29,"context_line":"running:"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"* Windows Hyper-V / Server 2012 R2: only the virtual hard disk hot resize is supported. This means that this feature is only appliable if the new target"},{"line_number":32,"context_line":"flavor requires only a bigger disk. Cold resize will be performed in any other"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_57052644","line":29,"in_reply_to":"3a961159_edfaccbb","updated":"2014-12-12 13:45:43.000000000","message":"Done","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"1cb3ce368d37ad72b5ebe3230d9828e25fff7b33","unresolved":false,"context_lines":[{"line_number":28,"context_line":"There are 2 use cases, depending on what OS the nova-compute service is"},{"line_number":29,"context_line":"running:"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"* Windows Hyper-V / Server 2012 R2: only the virtual hard disk hot resize is supported. This means that this feature is only appliable if the new target"},{"line_number":32,"context_line":"flavor requires only a bigger disk. Cold resize will be performed in any other"},{"line_number":33,"context_line":"cases. For more details, check the source [1]."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_ed73ac7d","line":31,"updated":"2014-12-12 10:36:19.000000000","message":"/ WIndows 8.1\n\nPlease add a blank line after the OS bullet point for clarity:\n\n* Windows Hyper-V / Server 2012 R2 / Windows 8.1\n\nOnly the ...","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"5b3e581e8d8fc0a320074a393dba4c91c1e480c9","unresolved":false,"context_lines":[{"line_number":29,"context_line":"running:"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"* Windows Hyper-V / Server 2012 R2: only the virtual hard disk hot resize is supported. This means that this feature is only appliable if the new target"},{"line_number":32,"context_line":"flavor requires only a bigger disk. Cold resize will be performed in any other"},{"line_number":33,"context_line":"cases. For more details, check the source [1]."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* Windows Hyper-V / Server 10 Technical Preview or newer: only virtual hard"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_1c3e6c28","line":32,"updated":"2014-12-12 08:58:13.000000000","message":"NIT: wrap this line","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8e958a8f2348ae7aec7e311c8f886c86ec5af22b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"running:"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"* Windows Hyper-V / Server 2012 R2: only the virtual hard disk hot resize is supported. This means that this feature is only appliable if the new target"},{"line_number":32,"context_line":"flavor requires only a bigger disk. Cold resize will be performed in any other"},{"line_number":33,"context_line":"cases. For more details, check the source [1]."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* Windows Hyper-V / Server 10 Technical Preview or newer: only virtual hard"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_6d609ca5","line":32,"in_reply_to":"3a961159_1c3e6c28","updated":"2014-12-12 10:35:11.000000000","message":"Done","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"1cb3ce368d37ad72b5ebe3230d9828e25fff7b33","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"* Windows Hyper-V / Server 2012 R2: only the virtual hard disk hot resize is supported. This means that this feature is only appliable if the new target"},{"line_number":32,"context_line":"flavor requires only a bigger disk. Cold resize will be performed in any other"},{"line_number":33,"context_line":"cases. For more details, check the source [1]."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* Windows Hyper-V / Server 10 Technical Preview or newer: only virtual hard"},{"line_number":36,"context_line":"disk and memory hot resize are supported. Cold resize will be performed if the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_4decc0f3","line":33,"updated":"2014-12-12 10:36:19.000000000","message":"What about memory?","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"1cb3ce368d37ad72b5ebe3230d9828e25fff7b33","unresolved":false,"context_lines":[{"line_number":33,"context_line":"cases. For more details, check the source [1]."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* Windows Hyper-V / Server 10 Technical Preview or newer: only virtual hard"},{"line_number":36,"context_line":"disk and memory hot resize are supported. Cold resize will be performed if the"},{"line_number":37,"context_line":"flavor requires a different number of vCPUs. For more details, check the"},{"line_number":38,"context_line":"source [2]."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_8d0ce8ee","line":36,"updated":"2014-12-12 10:36:19.000000000","message":"you can remove \"only\" here, as there\u0027s no 3rd case","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c375f99dd447b99a4cd70a45906dafead52926a6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"cases. For more details, check the source [1]."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"* Windows Hyper-V / Server 10 Technical Preview or newer: only virtual hard"},{"line_number":36,"context_line":"disk and memory hot resize are supported. Cold resize will be performed if the"},{"line_number":37,"context_line":"flavor requires a different number of vCPUs. For more details, check the"},{"line_number":38,"context_line":"source [2]."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_43bf2faa","line":36,"in_reply_to":"3a961159_8d0ce8ee","updated":"2014-12-12 13:45:43.000000000","message":"Done","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"1cb3ce368d37ad72b5ebe3230d9828e25fff7b33","unresolved":false,"context_lines":[{"line_number":35,"context_line":"* Windows Hyper-V / Server 10 Technical Preview or newer: only virtual hard"},{"line_number":36,"context_line":"disk and memory hot resize are supported. Cold resize will be performed if the"},{"line_number":37,"context_line":"flavor requires a different number of vCPUs. For more details, check the"},{"line_number":38,"context_line":"source [2]."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"There are a few restrictions that apply to this feature, as mentioned in [1]:"},{"line_number":41,"context_line":"* The disk format must be VHDX."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_6d8a5c1c","line":38,"updated":"2014-12-12 10:36:19.000000000","message":"You can put the vCPU note on a separate paragraph, like:\n\nIn any case changing the number of vCPUs on a live instance is not supported, which implies that a cold resize will be performed in such case.","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c375f99dd447b99a4cd70a45906dafead52926a6","unresolved":false,"context_lines":[{"line_number":35,"context_line":"* Windows Hyper-V / Server 10 Technical Preview or newer: only virtual hard"},{"line_number":36,"context_line":"disk and memory hot resize are supported. Cold resize will be performed if the"},{"line_number":37,"context_line":"flavor requires a different number of vCPUs. For more details, check the"},{"line_number":38,"context_line":"source [2]."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"There are a few restrictions that apply to this feature, as mentioned in [1]:"},{"line_number":41,"context_line":"* The disk format must be VHDX."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_63dfcb0d","line":38,"in_reply_to":"3a961159_6d8a5c1c","updated":"2014-12-12 13:45:43.000000000","message":"Done","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"1cb3ce368d37ad72b5ebe3230d9828e25fff7b33","unresolved":false,"context_lines":[{"line_number":37,"context_line":"flavor requires a different number of vCPUs. For more details, check the"},{"line_number":38,"context_line":"source [2]."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"There are a few restrictions that apply to this feature, as mentioned in [1]:"},{"line_number":41,"context_line":"* The disk format must be VHDX."},{"line_number":42,"context_line":"* The disk to be resized must be attached to a SCSI controller."},{"line_number":43,"context_line":"* The resize must occur on the same host."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_6dbc1cdd","line":40,"updated":"2014-12-12 10:36:19.000000000","message":"You don\u0027t say anything about dynamic memory","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c375f99dd447b99a4cd70a45906dafead52926a6","unresolved":false,"context_lines":[{"line_number":37,"context_line":"flavor requires a different number of vCPUs. For more details, check the"},{"line_number":38,"context_line":"source [2]."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"There are a few restrictions that apply to this feature, as mentioned in [1]:"},{"line_number":41,"context_line":"* The disk format must be VHDX."},{"line_number":42,"context_line":"* The disk to be resized must be attached to a SCSI controller."},{"line_number":43,"context_line":"* The resize must occur on the same host."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_8dc308ec","line":40,"in_reply_to":"3a961159_6dbc1cdd","updated":"2014-12-12 13:45:43.000000000","message":"Done","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"1cb3ce368d37ad72b5ebe3230d9828e25fff7b33","unresolved":false,"context_lines":[{"line_number":53,"context_line":"There are a few changes that needs to be applied to the Hyper-V driver in order"},{"line_number":54,"context_line":"to support this feature:"},{"line_number":55,"context_line":"* Attach the virtual hard disks to the SCSI controller instead of the IDE"},{"line_number":56,"context_line":"  controller."},{"line_number":57,"context_line":"* Add virtual hard disk online resize support to a subclass of VHDUtilsV2,"},{"line_number":58,"context_line":"  which will be used in Windows Hyper-V / Server 2012 R2 or newer."},{"line_number":59,"context_line":"* Add support for memory resize in a subclass of VMUtilsV2, which will be used"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_cd9c3060","line":56,"updated":"2014-12-12 10:36:19.000000000","message":"Booting from SCSI requires Gen 2.","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c375f99dd447b99a4cd70a45906dafead52926a6","unresolved":false,"context_lines":[{"line_number":53,"context_line":"There are a few changes that needs to be applied to the Hyper-V driver in order"},{"line_number":54,"context_line":"to support this feature:"},{"line_number":55,"context_line":"* Attach the virtual hard disks to the SCSI controller instead of the IDE"},{"line_number":56,"context_line":"  controller."},{"line_number":57,"context_line":"* Add virtual hard disk online resize support to a subclass of VHDUtilsV2,"},{"line_number":58,"context_line":"  which will be used in Windows Hyper-V / Server 2012 R2 or newer."},{"line_number":59,"context_line":"* Add support for memory resize in a subclass of VMUtilsV2, which will be used"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_e3a49ba7","line":56,"in_reply_to":"3a961159_cd9c3060","updated":"2014-12-12 13:45:43.000000000","message":"Yeah, you are right. Adding this as a requirement.","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"1cb3ce368d37ad72b5ebe3230d9828e25fff7b33","unresolved":false,"context_lines":[{"line_number":61,"context_line":"* Add the appropriate changes to utilsfactory to accommodate the new utils"},{"line_number":62,"context_line":"  classes mentioned above."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Since hot resize can only occur if the host stays the same, we must check that"},{"line_number":65,"context_line":"it is truly the case and the new flavor is appropriate for a hot resize. Cold"},{"line_number":66,"context_line":"resize is to be applied otherwise, meaning there would be no change in"},{"line_number":67,"context_line":"functionality."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_6ddfbc0d","line":64,"updated":"2014-12-12 10:36:19.000000000","message":"You can skip this paragraph, as it\u0027s redundant. Checks to verify is same host resize can be applied (resource wise) are already performed by the scheduler.","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c375f99dd447b99a4cd70a45906dafead52926a6","unresolved":false,"context_lines":[{"line_number":61,"context_line":"* Add the appropriate changes to utilsfactory to accommodate the new utils"},{"line_number":62,"context_line":"  classes mentioned above."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Since hot resize can only occur if the host stays the same, we must check that"},{"line_number":65,"context_line":"it is truly the case and the new flavor is appropriate for a hot resize. Cold"},{"line_number":66,"context_line":"resize is to be applied otherwise, meaning there would be no change in"},{"line_number":67,"context_line":"functionality."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_63a34bb2","line":64,"in_reply_to":"3a961159_6ddfbc0d","updated":"2014-12-12 13:45:43.000000000","message":"Hm, I don\u0027t think it\u0027s clear enough then. I meant that we must check if we can perform a hot resize: Gen 2 VM, new flavor only requires extra disk and / or extra memory.","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"1cb3ce368d37ad72b5ebe3230d9828e25fff7b33","unresolved":false,"context_lines":[{"line_number":85,"context_line":"* It should not terminate the connection for any of the instance\u0027s volumes,"},{"line_number":86,"context_line":"since they are still in use and the instance can actively use them."},{"line_number":87,"context_line":"* Since the resize occurs on the same host, avoid calling finish_resize through"},{"line_number":88,"context_line":"compute_rpcapi and call the method locally."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Alternatives"},{"line_number":91,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_2dd93422","line":88,"updated":"2014-12-12 10:36:19.000000000","message":"good point","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"1cb3ce368d37ad72b5ebe3230d9828e25fff7b33","unresolved":false,"context_lines":[{"line_number":115,"context_line":"Other end user impact"},{"line_number":116,"context_line":"---------------------"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"None"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"Performance Impact"},{"line_number":121,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_edf9ec80","line":118,"updated":"2014-12-12 10:36:19.000000000","message":"Here we must add that the host must have a mechanism to detect when the disk size changes in order to do a \"growroot\" style operation. cloud-init and cloudbase-init ATM perform this check on boot.","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"5b3e581e8d8fc0a320074a393dba4c91c1e480c9","unresolved":false,"context_lines":[{"line_number":148,"context_line":"Work items or tasks -- break the feature up into the things that need to be"},{"line_number":149,"context_line":"done to implement it. Those parts might end up being done by different people,"},{"line_number":150,"context_line":"but we\u0027re mostly trying to understand the timeline for implementation."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Dependencies"},{"line_number":154,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_1c258c08","line":151,"updated":"2014-12-12 08:58:13.000000000","message":"NIT: I think something like \"as described in the \u0027proposed change\u0027 section.  Is more appropriate.","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8e958a8f2348ae7aec7e311c8f886c86ec5af22b","unresolved":false,"context_lines":[{"line_number":148,"context_line":"Work items or tasks -- break the feature up into the things that need to be"},{"line_number":149,"context_line":"done to implement it. Those parts might end up being done by different people,"},{"line_number":150,"context_line":"but we\u0027re mostly trying to understand the timeline for implementation."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Dependencies"},{"line_number":154,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_6d141ca0","line":151,"in_reply_to":"3a961159_1c258c08","updated":"2014-12-12 10:35:11.000000000","message":"Done","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"1cb3ce368d37ad72b5ebe3230d9828e25fff7b33","unresolved":false,"context_lines":[{"line_number":148,"context_line":"Work items or tasks -- break the feature up into the things that need to be"},{"line_number":149,"context_line":"done to implement it. Those parts might end up being done by different people,"},{"line_number":150,"context_line":"but we\u0027re mostly trying to understand the timeline for implementation."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Dependencies"},{"line_number":154,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_0d3e3828","line":151,"in_reply_to":"3a961159_1c258c08","updated":"2014-12-12 10:36:19.000000000","message":"agreed, this paragraph can be limited to Tony\u0027s suggestion","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"1cb3ce368d37ad72b5ebe3230d9828e25fff7b33","unresolved":false,"context_lines":[{"line_number":153,"context_line":"Dependencies"},{"line_number":154,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"* Windows Hyper-V / Server 2012 R2 (hot resize - disk only)"},{"line_number":157,"context_line":"* Windows Hyper-V / Server 10 Technical Preview (hot resize - disk + memory)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_4d44c0b6","line":156,"updated":"2014-12-12 10:36:19.000000000","message":"Not a real dependency, you can just put None here","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c375f99dd447b99a4cd70a45906dafead52926a6","unresolved":false,"context_lines":[{"line_number":153,"context_line":"Dependencies"},{"line_number":154,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"* Windows Hyper-V / Server 2012 R2 (hot resize - disk only)"},{"line_number":157,"context_line":"* Windows Hyper-V / Server 10 Technical Preview (hot resize - disk + memory)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_4d2a0091","line":156,"in_reply_to":"3a961159_4d44c0b6","updated":"2014-12-12 13:45:43.000000000","message":"Done","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"1cb3ce368d37ad72b5ebe3230d9828e25fff7b33","unresolved":false,"context_lines":[{"line_number":159,"context_line":"Testing"},{"line_number":160,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"This feature should have the unit tests related to the any changes."},{"line_number":163,"context_line":"CI testing will be performed by Hyper-V CI."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_cd0fd086","line":162,"updated":"2014-12-12 10:36:19.000000000","message":"Unit tests are not optional, so we can skip it here IMO.\nThe reference to the Hyper-V CI is necessary","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c375f99dd447b99a4cd70a45906dafead52926a6","unresolved":false,"context_lines":[{"line_number":159,"context_line":"Testing"},{"line_number":160,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"This feature should have the unit tests related to the any changes."},{"line_number":163,"context_line":"CI testing will be performed by Hyper-V CI."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_0d2478c3","line":162,"in_reply_to":"3a961159_cd0fd086","updated":"2014-12-12 13:45:43.000000000","message":"Done","commit_id":"2a9beba3ef62b9fb87f30d2b4c12cd301a19ebf3"}],"specs/liberty/approved/instance-live-resize.rst":[{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"99a1b8b1a6d2622b750e23ec3431c09ac78c1722","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The main disadvantage for resizing an instance is the required down time"},{"line_number":22,"context_line":"necessary to do so. This spec will allow users to resize their instances while"},{"line_number":23,"context_line":"they are still running."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Use Cases"},{"line_number":26,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_58b2b195","line":23,"updated":"2015-05-17 05:16:03.000000000","message":"Yes!  This is a great feature!  I\u0027ve heard many operator requests for this.","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"97d0bf24250140e197fbd9bae9d89fe14e5de2d6","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The main disadvantage for resizing an instance is the required down time"},{"line_number":22,"context_line":"necessary to do so. This spec will allow users to resize their instances while"},{"line_number":23,"context_line":"they are still running."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Use Cases"},{"line_number":26,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_ca927c9f","line":23,"in_reply_to":"7a016987_58b2b195","updated":"2015-05-26 22:02:42.000000000","message":"Good to know!","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"99a1b8b1a6d2622b750e23ec3431c09ac78c1722","unresolved":false,"context_lines":[{"line_number":54,"context_line":"their respective virt Driver."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"In order to perform live resize, the following criterias must be met:"},{"line_number":57,"context_line":"* The image should contain a property called \u0027supports_live_resize\u0027, which will"},{"line_number":58,"context_line":"  contain a list of resizable resources."},{"line_number":59,"context_line":"  e.g.: supports_live_resize\u003ddisk,memory,vcpu"},{"line_number":60,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_189559dd","line":57,"updated":"2015-05-17 05:16:03.000000000","message":"Should this be an image property?  If so, should there be something similar for the hypervisor capabilities as well?","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"97d0bf24250140e197fbd9bae9d89fe14e5de2d6","unresolved":false,"context_lines":[{"line_number":54,"context_line":"their respective virt Driver."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"In order to perform live resize, the following criterias must be met:"},{"line_number":57,"context_line":"* The image should contain a property called \u0027supports_live_resize\u0027, which will"},{"line_number":58,"context_line":"  contain a list of resizable resources."},{"line_number":59,"context_line":"  e.g.: supports_live_resize\u003ddisk,memory,vcpu"},{"line_number":60,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_201cb6c0","line":57,"in_reply_to":"7a016987_189559dd","updated":"2015-05-26 22:02:42.000000000","message":"Yes, it should be an image property, since not all the guests support this feature. As for the hypervisor capabilities, that might be an interesting idea, but cannot be done at the moment. \n\nI\u0027ve came across something similar in the past, Hyper-V Generation 2 VMs, which could have been solved via hypervisor capabilities (hosts would post which generations it supported), but ultimately, it was solved by specifying the image property hypervisor_version_requires. This solution can also be used in this case.","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"99a1b8b1a6d2622b750e23ec3431c09ac78c1722","unresolved":false,"context_lines":[{"line_number":60,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":61,"context_line":"  created with boot from volume."},{"line_number":62,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":63,"context_line":"  not supported by all hypervisors."},{"line_number":64,"context_line":"* The number of VCPUs must remain the same, as live adding VCPUs is not"},{"line_number":65,"context_line":"  not supported by all hypervisors."},{"line_number":66,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_18fe7937","line":63,"updated":"2015-05-17 05:16:03.000000000","message":"Could this be a configurable option vs. a hard assumption?  e.g., specified via a hypervisor capability?","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"97d0bf24250140e197fbd9bae9d89fe14e5de2d6","unresolved":false,"context_lines":[{"line_number":60,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":61,"context_line":"  created with boot from volume."},{"line_number":62,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":63,"context_line":"  not supported by all hypervisors."},{"line_number":64,"context_line":"* The number of VCPUs must remain the same, as live adding VCPUs is not"},{"line_number":65,"context_line":"  not supported by all hypervisors."},{"line_number":66,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_005f7a76","line":63,"in_reply_to":"7a016987_18fe7937","updated":"2015-05-26 22:02:42.000000000","message":"Hard assumption for now. This blueprint is currently for upsizing, as downsizing can be a little bit more problematic. For example, you won\u0027t be able to downsize the memory from 8gb to 4gb if the guest is currently using 6gb.\n\nFor the time being, if this blueprint will be accepted, upsizing will be prioritary for Liberty, and if the time allows it, downsize as well.","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"99a1b8b1a6d2622b750e23ec3431c09ac78c1722","unresolved":false,"context_lines":[{"line_number":62,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":63,"context_line":"  not supported by all hypervisors."},{"line_number":64,"context_line":"* The number of VCPUs must remain the same, as live adding VCPUs is not"},{"line_number":65,"context_line":"  not supported by all hypervisors."},{"line_number":66,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":67,"context_line":"  Nova compute node\u0027s nova.conf file (Phase I)."},{"line_number":68,"context_line":"* The allow_live_resize‏ config option must be set to True in the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_f8f83d4b","line":65,"updated":"2015-05-17 05:16:03.000000000","message":"Ditto on the configurable option.","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"97d0bf24250140e197fbd9bae9d89fe14e5de2d6","unresolved":false,"context_lines":[{"line_number":62,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":63,"context_line":"  not supported by all hypervisors."},{"line_number":64,"context_line":"* The number of VCPUs must remain the same, as live adding VCPUs is not"},{"line_number":65,"context_line":"  not supported by all hypervisors."},{"line_number":66,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":67,"context_line":"  Nova compute node\u0027s nova.conf file (Phase I)."},{"line_number":68,"context_line":"* The allow_live_resize‏ config option must be set to True in the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_e0633e40","line":65,"in_reply_to":"7a016987_f8f83d4b","updated":"2015-05-26 22:02:42.000000000","message":"Ditto as well. Also, downsizing the number of VCPUs is even more problematic than downsizing the memory, since the guest will have to know to evacuate the processes in the vcpus that will be removed.","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"99a1b8b1a6d2622b750e23ec3431c09ac78c1722","unresolved":false,"context_lines":[{"line_number":69,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":70,"context_line":"  this blueprint and will have the default value False. The reason is that not"},{"line_number":71,"context_line":"  all the compute nodes will be able to support this feature (e.g.: compute"},{"line_number":72,"context_line":"  nodes that that not meet the minimum hypervisor version)."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Live downsizing will be proposed and implemented later."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_d8bd8169","line":72,"updated":"2015-05-17 05:16:03.000000000","message":"Should this be a hypervisor capability vs. a nova.conf option?  Then the respective drivers could apply whatever logic (e.g., version checking) they want and set the capabilities accordingly.","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"97d0bf24250140e197fbd9bae9d89fe14e5de2d6","unresolved":false,"context_lines":[{"line_number":69,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":70,"context_line":"  this blueprint and will have the default value False. The reason is that not"},{"line_number":71,"context_line":"  all the compute nodes will be able to support this feature (e.g.: compute"},{"line_number":72,"context_line":"  nodes that that not meet the minimum hypervisor version)."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Live downsizing will be proposed and implemented later."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_208f16ce","line":72,"in_reply_to":"7a016987_d8bd8169","updated":"2015-05-26 22:02:42.000000000","message":"I am given to understand that some operators wouldn\u0027t want this feature at all and they would disable it anyways (via policy.json).\n\nYou have an interesting point, IMO, this should be reported via hypervisor capabilities, but currently, there is no way to expose those capabilities. \n\nSpeaking of which, this makes me think about Phase II of this blueprint, as the scheduler does not know if the new host supports live resize or not, it can cause live resize to fail.\n\nThis can be solved via the hypervisor_version_requires I\u0027ve mentioned above, as it will be used by the scheduler.","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"99a1b8b1a6d2622b750e23ec3431c09ac78c1722","unresolved":false,"context_lines":[{"line_number":71,"context_line":"  all the compute nodes will be able to support this feature (e.g.: compute"},{"line_number":72,"context_line":"  nodes that that not meet the minimum hypervisor version)."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Live downsizing will be proposed and implemented later."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Project Priority"},{"line_number":77,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_78ba0d70","line":74,"updated":"2015-05-17 05:16:03.000000000","message":"See above--can\u0027t we just make live resize and the various vcpu+up/down, memory+up/down, disk+up/down, etc. all various capabilities the hypervisors publish and then the upper layers can be purely data driven?  Just a thought.","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"97d0bf24250140e197fbd9bae9d89fe14e5de2d6","unresolved":false,"context_lines":[{"line_number":71,"context_line":"  all the compute nodes will be able to support this feature (e.g.: compute"},{"line_number":72,"context_line":"  nodes that that not meet the minimum hypervisor version)."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Live downsizing will be proposed and implemented later."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Project Priority"},{"line_number":77,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_30d50cb9","line":74,"in_reply_to":"7a016987_78ba0d70","updated":"2015-05-26 22:02:42.000000000","message":"For now, the focus of this blueprint will be live resize up.\n\nIMO, the most possible resource for live downsize would be memory, as stated above.\n\nFor disk, the typical usecase I\u0027m thinking about is that you can run out of storage at one point, so you will perform a disk live resize and fill the disk further. Downsize won\u0027t be possible, as the actual disk size will be bigger than the new flavor disk size. To make things even more difficult, the extra storage will also be used by the partition tables inside the guest, so truncating that could cause data loss. Plus, AFAIK, there is no way to tell the cloud-init agent to shrink the partition to the desired size.\n\nAs for vCPUs, see above.","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"99a1b8b1a6d2622b750e23ec3431c09ac78c1722","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"None"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Proposed change"},{"line_number":82,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Live resize feature will be used as such:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_387495cd","line":81,"updated":"2015-05-17 05:16:03.000000000","message":"Just curious how this will interface with the nova-scheduler to ensure it doesn\u0027t try to assign another host?  Are you planning on passing \u0027force_hosts\u0027 to the scheduler when \u0027live resize\u0027 is passed?  Some other alternative?\n\nI\u0027m sure you know this, but the reason I ask is because that allow_resize_to_same_host \u003d True doesn\u0027t guarantee the VM\u0027s current host will be selected (it\u0027s just not auto-excluded).","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"97d0bf24250140e197fbd9bae9d89fe14e5de2d6","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"None"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Proposed change"},{"line_number":82,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Live resize feature will be used as such:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_7035c4f5","line":81,"in_reply_to":"7a016987_387495cd","updated":"2015-05-26 22:02:42.000000000","message":"An interesting idea and good point. I\u0027m thinking about another flag passed to the API, --same-host, but I\u0027ll take a look if there is another better alternative.","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"99a1b8b1a6d2622b750e23ec3431c09ac78c1722","unresolved":false,"context_lines":[{"line_number":120,"context_line":"* In this phase, live resize will only be possible on the same host. If there"},{"line_number":121,"context_line":"  are not enough resources available, live resize should not be performed."},{"line_number":122,"context_line":"* Since the resize occurs on the same host, avoid calling finish_resize through"},{"line_number":123,"context_line":"compute_rpcapi and call the method locally."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Phase II. Live migrate, then live resize."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_587991c7","line":123,"updated":"2015-05-17 05:16:03.000000000","message":"Will there be a way (e.g., API flag) for the user to tell nova \"Hey, if you can\u0027t resize on this host... please don\u0027t live migration + live resize?\"  I think this would make sense as some operators might be weary of the implicit migration and would just prefer the resize request to fail.","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"97d0bf24250140e197fbd9bae9d89fe14e5de2d6","unresolved":false,"context_lines":[{"line_number":120,"context_line":"* In this phase, live resize will only be possible on the same host. If there"},{"line_number":121,"context_line":"  are not enough resources available, live resize should not be performed."},{"line_number":122,"context_line":"* Since the resize occurs on the same host, avoid calling finish_resize through"},{"line_number":123,"context_line":"compute_rpcapi and call the method locally."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Phase II. Live migrate, then live resize."},{"line_number":126,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_7099441f","line":123,"in_reply_to":"7a016987_587991c7","updated":"2015-05-26 22:02:42.000000000","message":"Yeah, makes sense. I would say the --same-host flag you suggested above.","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"99a1b8b1a6d2622b750e23ec3431c09ac78c1722","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"None"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"Notifications impact"},{"line_number":161,"context_line":"--------------------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_986ee9ff","line":160,"updated":"2015-05-17 05:16:03.000000000","message":"Currently, notifications are generated for most (all?) of the VM life cycle operations... do we need to add anything to the resize payload to allow a recipient of the notifications that this is a live resize?","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"97d0bf24250140e197fbd9bae9d89fe14e5de2d6","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"None"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"Notifications impact"},{"line_number":161,"context_line":"--------------------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_506c0808","line":160,"in_reply_to":"7a016987_986ee9ff","updated":"2015-05-26 22:02:42.000000000","message":"Will look into that.\n\nBut for now, I was thinking that it would use the same notifications as cold migration.","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"99a1b8b1a6d2622b750e23ec3431c09ac78c1722","unresolved":false,"context_lines":[{"line_number":178,"context_line":"---------------------"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"To use this feature, the users will have to enable it from the compute node\u0027s"},{"line_number":181,"context_line":"nova.conf, setting the config option allow_live_resize‏ to True. Also, this"},{"line_number":182,"context_line":"feature cannot be used if the allow_resize_to_same_host config option is set"},{"line_number":183,"context_line":"to False."},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_78168d56","line":181,"updated":"2015-05-17 05:16:03.000000000","message":"As I mentioned previously, it seems that it would be more appropriate to use a hypervisor capability than a nova.conf option for this as the virt drivers can just perform this logic automatically and save operators the time of managing more conf options... unless I\u0027m overlooking something?","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"97d0bf24250140e197fbd9bae9d89fe14e5de2d6","unresolved":false,"context_lines":[{"line_number":178,"context_line":"---------------------"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"To use this feature, the users will have to enable it from the compute node\u0027s"},{"line_number":181,"context_line":"nova.conf, setting the config option allow_live_resize‏ to True. Also, this"},{"line_number":182,"context_line":"feature cannot be used if the allow_resize_to_same_host config option is set"},{"line_number":183,"context_line":"to False."},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_13133a5e","line":181,"in_reply_to":"7a016987_78168d56","updated":"2015-05-26 22:02:42.000000000","message":"True, but as I\u0027ve stated above, not currently possible.\n\nImage property hypervisor_version_requires should be used.","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":7664,"name":"Joe Cropper","email":"jwcroppe@us.ibm.com","username":"jwcroppe"},"change_message_id":"99a1b8b1a6d2622b750e23ec3431c09ac78c1722","unresolved":false,"context_lines":[{"line_number":220,"context_line":"as well as the allow_live_resize‏ config option."},{"line_number":221,"context_line":"The 3 phases this blueprint will have will also be uploaded to nova as a"},{"line_number":222,"context_line":"devref."},{"line_number":223,"context_line":"The \u0027supports_live_resize\u0027 image property will have to be documented."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"References"},{"line_number":226,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_38093532","line":223,"updated":"2015-05-17 05:16:03.000000000","message":"Can you go into more detail about why the image property is needed?\n\nAnd as I mentioned, this also seems appropriate as a hypervisor option too.","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"97d0bf24250140e197fbd9bae9d89fe14e5de2d6","unresolved":false,"context_lines":[{"line_number":220,"context_line":"as well as the allow_live_resize‏ config option."},{"line_number":221,"context_line":"The 3 phases this blueprint will have will also be uploaded to nova as a"},{"line_number":222,"context_line":"devref."},{"line_number":223,"context_line":"The \u0027supports_live_resize\u0027 image property will have to be documented."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"References"},{"line_number":226,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a016987_bbfb1447","line":223,"in_reply_to":"7a016987_38093532","updated":"2015-05-26 22:02:42.000000000","message":"Not all guests support live resize.","commit_id":"a72d6b36547b8777ab9b7c589d240b8efd4c1f97"},{"author":{"_account_id":13997,"name":"SHIGEMATSU Mitsuhiro","email":"shigematsu.mitsuhiro@lab.ntt.co.jp","username":"pshige"},"change_message_id":"cefe3f01debe64e4be729f2bdddc9ab82714300d","unresolved":false,"context_lines":[{"line_number":26,"context_line":"----------"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"The Support Matrix for online resize is as follows:"},{"line_number":29,"context_line":"-----------------------------------------------"},{"line_number":30,"context_line":"          |    Disk    |   Memory   |   VCPUs |"},{"line_number":31,"context_line":"-----------------------------------------------"},{"line_number":32,"context_line":"Hyper-V   |      ✓     |     ✓     |    X    |"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da20952f_bad2885a","line":29,"updated":"2015-09-06 04:58:38.000000000","message":"Title underline too short.","commit_id":"3b001f7bcc24c23fe8a2ad14a8519624a3366593"},{"author":{"_account_id":13997,"name":"SHIGEMATSU Mitsuhiro","email":"shigematsu.mitsuhiro@lab.ntt.co.jp","username":"pshige"},"change_message_id":"cefe3f01debe64e4be729f2bdddc9ab82714300d","unresolved":false,"context_lines":[{"line_number":53,"context_line":"memory is supported by all the drivers and this feature can be introduced in"},{"line_number":54,"context_line":"their respective virt Driver."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"In order to perform live resize, the following criterias must be met:"},{"line_number":57,"context_line":"* The image should contain a property called \u0027supports_live_resize\u0027, which will"},{"line_number":58,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":59,"context_line":"  support live resize (or they support it only partly, for example, only live"}],"source_content_type":"text/x-rst","patch_set":7,"id":"da20952f_9af464f1","line":56,"updated":"2015-09-06 04:58:38.000000000","message":"s/criterias/criteria/","commit_id":"3b001f7bcc24c23fe8a2ad14a8519624a3366593"}],"specs/liberty/instance-live-resize.rst":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d708ba2ff40c284e03fcbed7b89d51b8e4e1c73f","unresolved":false,"context_lines":[{"line_number":32,"context_line":"Hyper-V |      ✓     |     ✓     |    X    |"},{"line_number":33,"context_line":"        |  [1][2][3] |   [3][4]   |         |"},{"line_number":34,"context_line":"---------------------------------------------"},{"line_number":35,"context_line":"KVM     |      ✓     |     ✓     |    ✓    |"},{"line_number":36,"context_line":"        |     [6]    |    [7]     |   [8]   |"},{"line_number":37,"context_line":"---------------------------------------------"},{"line_number":38,"context_line":"VMWare  |      ✓     |     ✓     |    ✓    |"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_821dac68","line":35,"updated":"2015-04-17 09:34:00.000000000","message":"for clarity, lets put KVM+libvirt","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8be036fa278e8f7556fff053d49939daa4ed26bf","unresolved":false,"context_lines":[{"line_number":32,"context_line":"Hyper-V |      ✓     |     ✓     |    X    |"},{"line_number":33,"context_line":"        |  [1][2][3] |   [3][4]   |         |"},{"line_number":34,"context_line":"---------------------------------------------"},{"line_number":35,"context_line":"KVM     |      ✓     |     ✓     |    ✓    |"},{"line_number":36,"context_line":"        |     [6]    |    [7]     |   [8]   |"},{"line_number":37,"context_line":"---------------------------------------------"},{"line_number":38,"context_line":"VMWare  |      ✓     |     ✓     |    ✓    |"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a0c5dc1_e57c6322","line":35,"in_reply_to":"3ab451fb_821dac68","updated":"2015-05-12 18:28:32.000000000","message":"Done","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":6772,"name":"Stephen Gordon","email":"sgordon@redhat.com","username":"sgordon"},"change_message_id":"274f40560aa8ce57e6c9833b7d736fdd6cc93fc8","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        |  [1][2][3] |   [3][4]   |         |"},{"line_number":34,"context_line":"---------------------------------------------"},{"line_number":35,"context_line":"KVM     |      ✓     |     ✓     |    ✓    |"},{"line_number":36,"context_line":"        |     [6]    |    [7]     |   [8]   |"},{"line_number":37,"context_line":"---------------------------------------------"},{"line_number":38,"context_line":"VMWare  |      ✓     |     ✓     |    ✓    |"},{"line_number":39,"context_line":"        |     [9]    |    [10]    |   [11]  |"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5aa745d1_43b431f1","line":36,"updated":"2015-04-16 17:14:39.000000000","message":"Do we know the minimum version(s) for Qemu/Libvirt to support these operations?","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"d8dad0106abad481b4b62a88debfac0fbff32e56","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        |  [1][2][3] |   [3][4]   |         |"},{"line_number":34,"context_line":"---------------------------------------------"},{"line_number":35,"context_line":"KVM     |      ✓     |     ✓     |    ✓    |"},{"line_number":36,"context_line":"        |     [6]    |    [7]     |   [8]   |"},{"line_number":37,"context_line":"---------------------------------------------"},{"line_number":38,"context_line":"VMWare  |      ✓     |     ✓     |    ✓    |"},{"line_number":39,"context_line":"        |     [9]    |    [10]    |   [11]  |"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_36c1882f","line":36,"in_reply_to":"5aa745d1_43b431f1","updated":"2015-04-16 23:26:47.000000000","message":"I can check, but from the source [7], which is an email on the libvirt ML - the feature was introduced in July 2014.\n\nI will try to find out exactly the version tommorow.","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d708ba2ff40c284e03fcbed7b89d51b8e4e1c73f","unresolved":false,"context_lines":[{"line_number":38,"context_line":"VMWare  |      ✓     |     ✓     |    ✓    |"},{"line_number":39,"context_line":"        |     [9]    |    [10]    |   [11]  |"},{"line_number":40,"context_line":"---------------------------------------------"},{"line_number":41,"context_line":"Xen     |      ✓     |     ✓     |    ✓    |"},{"line_number":42,"context_line":"        |  [12][13]  |    [14]    |   [15]  |"},{"line_number":43,"context_line":"---------------------------------------------"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_57d3e438","line":41,"updated":"2015-04-17 09:34:00.000000000","message":"Its worth putting XenServer here, I suspect xen+libvirt might be good too, but it depends on the current state of the driver.","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8be036fa278e8f7556fff053d49939daa4ed26bf","unresolved":false,"context_lines":[{"line_number":38,"context_line":"VMWare  |      ✓     |     ✓     |    ✓    |"},{"line_number":39,"context_line":"        |     [9]    |    [10]    |   [11]  |"},{"line_number":40,"context_line":"---------------------------------------------"},{"line_number":41,"context_line":"Xen     |      ✓     |     ✓     |    ✓    |"},{"line_number":42,"context_line":"        |  [12][13]  |    [14]    |   [15]  |"},{"line_number":43,"context_line":"---------------------------------------------"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a0c5dc1_3b361804","line":41,"in_reply_to":"3ab451fb_57d3e438","updated":"2015-05-12 18:28:32.000000000","message":"Done","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d708ba2ff40c284e03fcbed7b89d51b8e4e1c73f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":51,"context_line":"  created with boot from volume."},{"line_number":52,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":53,"context_line":"  not supported by all hypervisors."},{"line_number":54,"context_line":"* The number of VCPUs must remain the same, as live adding VCPUs is not"},{"line_number":55,"context_line":"  not supported by all hypervisors."},{"line_number":56,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_57888422","line":53,"updated":"2015-04-17 09:34:00.000000000","message":"its a good starting point, I suspect folks might want the resize down as well.","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8be036fa278e8f7556fff053d49939daa4ed26bf","unresolved":false,"context_lines":[{"line_number":50,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":51,"context_line":"  created with boot from volume."},{"line_number":52,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":53,"context_line":"  not supported by all hypervisors."},{"line_number":54,"context_line":"* The number of VCPUs must remain the same, as live adding VCPUs is not"},{"line_number":55,"context_line":"  not supported by all hypervisors."},{"line_number":56,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a0c5dc1_c5addf32","line":53,"in_reply_to":"3ab451fb_57888422","updated":"2015-05-12 18:28:32.000000000","message":"True, But I think resize down should be implemented a little bit later. As I\u0027ve mentioned, live downsize is not as supported as live upsize.","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"37f09bbd3e9bc2a99652af321e4b04f091abbaea","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  created with boot from volume."},{"line_number":52,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":53,"context_line":"  not supported by all hypervisors."},{"line_number":54,"context_line":"* The number of VCPUs must remain the same, as live adding VCPUs is not"},{"line_number":55,"context_line":"  not supported by all hypervisors."},{"line_number":56,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":57,"context_line":"  Nova compute node\u0027s nova.conf file."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aa53dc9_d5b40a36","line":54,"updated":"2015-04-09 13:04:21.000000000","message":"only Hyper-V don\u0027t support it \nmaybe this check can be done in virt layer?","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"d8dad0106abad481b4b62a88debfac0fbff32e56","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  created with boot from volume."},{"line_number":52,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":53,"context_line":"  not supported by all hypervisors."},{"line_number":54,"context_line":"* The number of VCPUs must remain the same, as live adding VCPUs is not"},{"line_number":55,"context_line":"  not supported by all hypervisors."},{"line_number":56,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":57,"context_line":"  Nova compute node\u0027s nova.conf file."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_9695fc41","line":54,"in_reply_to":"9aa53dc9_d5b40a36","updated":"2015-04-16 23:26:47.000000000","message":"There has been a discussion about this in the previous commits. The other reviews agreed that there should be a parity among all the nova drivers (hence the table above). This is why this blueprint does not include hot vcpu resize (aka vcpu hot plug).\n\nAlso, adding live vcpus has probably the least amount of support (AFAIK, there is no support for this for Windows instances). \n\nI\u0027m fine with also adding live vcpu resize, but I\u0027m expecting that to be the largest source of failures for this new feature.","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"37f09bbd3e9bc2a99652af321e4b04f091abbaea","unresolved":false,"context_lines":[{"line_number":52,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":53,"context_line":"  not supported by all hypervisors."},{"line_number":54,"context_line":"* The number of VCPUs must remain the same, as live adding VCPUs is not"},{"line_number":55,"context_line":"  not supported by all hypervisors."},{"line_number":56,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":57,"context_line":"  Nova compute node\u0027s nova.conf file."},{"line_number":58,"context_line":"* The allow_live_resize‏ config option must be set to True in the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aa53dc9_6a155d47","line":55,"updated":"2015-04-09 13:04:21.000000000","message":"2 not","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d708ba2ff40c284e03fcbed7b89d51b8e4e1c73f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":53,"context_line":"  not supported by all hypervisors."},{"line_number":54,"context_line":"* The number of VCPUs must remain the same, as live adding VCPUs is not"},{"line_number":55,"context_line":"  not supported by all hypervisors."},{"line_number":56,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":57,"context_line":"  Nova compute node\u0027s nova.conf file."},{"line_number":58,"context_line":"* The allow_live_resize‏ config option must be set to True in the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_7773804e","line":55,"in_reply_to":"3ab451fb_76c15080","updated":"2015-04-17 09:34:00.000000000","message":"-1\n\nI think we just need to know if its supported for a particular VM or not.\n\nFor the hypervisors resize down works on (I am thinking about Xen here), it can require guest support, so image properties might be required.","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8be036fa278e8f7556fff053d49939daa4ed26bf","unresolved":false,"context_lines":[{"line_number":52,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":53,"context_line":"  not supported by all hypervisors."},{"line_number":54,"context_line":"* The number of VCPUs must remain the same, as live adding VCPUs is not"},{"line_number":55,"context_line":"  not supported by all hypervisors."},{"line_number":56,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":57,"context_line":"  Nova compute node\u0027s nova.conf file."},{"line_number":58,"context_line":"* The allow_live_resize‏ config option must be set to True in the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a0c5dc1_764b87b1","line":55,"in_reply_to":"3ab451fb_7773804e","updated":"2015-05-12 18:28:32.000000000","message":"Good point. Not all guests support live-resize, so we need to specify this via image properties.","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"d8dad0106abad481b4b62a88debfac0fbff32e56","unresolved":false,"context_lines":[{"line_number":52,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":53,"context_line":"  not supported by all hypervisors."},{"line_number":54,"context_line":"* The number of VCPUs must remain the same, as live adding VCPUs is not"},{"line_number":55,"context_line":"  not supported by all hypervisors."},{"line_number":56,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":57,"context_line":"  Nova compute node\u0027s nova.conf file."},{"line_number":58,"context_line":"* The allow_live_resize‏ config option must be set to True in the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_76c15080","line":55,"in_reply_to":"9aa53dc9_6a155d47","updated":"2015-04-16 23:26:47.000000000","message":"Done, didn\u0027t notice that. :)","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"37f09bbd3e9bc2a99652af321e4b04f091abbaea","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  not supported by all hypervisors."},{"line_number":54,"context_line":"* The number of VCPUs must remain the same, as live adding VCPUs is not"},{"line_number":55,"context_line":"  not supported by all hypervisors."},{"line_number":56,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":57,"context_line":"  Nova compute node\u0027s nova.conf file."},{"line_number":58,"context_line":"* The allow_live_resize‏ config option must be set to True in the"},{"line_number":59,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aa53dc9_2a2515c0","line":56,"updated":"2015-04-09 13:04:21.000000000","message":"just curious, is this because the live-resize can be done only in same host?","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"d8dad0106abad481b4b62a88debfac0fbff32e56","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  not supported by all hypervisors."},{"line_number":54,"context_line":"* The number of VCPUs must remain the same, as live adding VCPUs is not"},{"line_number":55,"context_line":"  not supported by all hypervisors."},{"line_number":56,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":57,"context_line":"  Nova compute node\u0027s nova.conf file."},{"line_number":58,"context_line":"* The allow_live_resize‏ config option must be set to True in the"},{"line_number":59,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_d6f26406","line":56,"in_reply_to":"9aa53dc9_2a2515c0","updated":"2015-04-16 23:26:47.000000000","message":"Yes, it can only be done on the same host.","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d708ba2ff40c284e03fcbed7b89d51b8e4e1c73f","unresolved":false,"context_lines":[{"line_number":54,"context_line":"* The number of VCPUs must remain the same, as live adding VCPUs is not"},{"line_number":55,"context_line":"  not supported by all hypervisors."},{"line_number":56,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":57,"context_line":"  Nova compute node\u0027s nova.conf file."},{"line_number":58,"context_line":"* The allow_live_resize‏ config option must be set to True in the"},{"line_number":59,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":60,"context_line":"  this blueprint."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_97adec8a","line":57,"updated":"2015-04-17 09:34:00.000000000","message":"so, I am not sure I like this restriction.\n\nYou can live-migrate, then live-resize.\n\nI like the idea of trying to first resize up on the same host, if that is \"allowed\" by the resource manager.\n\nBut general, the host is quite likely to be full, so you would want to have the ability to move it, although I am happy for that to be a follow on feature.","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8be036fa278e8f7556fff053d49939daa4ed26bf","unresolved":false,"context_lines":[{"line_number":54,"context_line":"* The number of VCPUs must remain the same, as live adding VCPUs is not"},{"line_number":55,"context_line":"  not supported by all hypervisors."},{"line_number":56,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":57,"context_line":"  Nova compute node\u0027s nova.conf file."},{"line_number":58,"context_line":"* The allow_live_resize‏ config option must be set to True in the"},{"line_number":59,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":60,"context_line":"  this blueprint."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a0c5dc1_a9175dec","line":57,"in_reply_to":"3ab451fb_97adec8a","updated":"2015-05-12 18:28:32.000000000","message":"True, we discussed this. I\u0027ll be adding the Support Phases section, as discussed.","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d708ba2ff40c284e03fcbed7b89d51b8e4e1c73f","unresolved":false,"context_lines":[{"line_number":57,"context_line":"  Nova compute node\u0027s nova.conf file."},{"line_number":58,"context_line":"* The allow_live_resize‏ config option must be set to True in the"},{"line_number":59,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":60,"context_line":"  this blueprint."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Project Priority"},{"line_number":63,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_37e298d6","line":60,"updated":"2015-04-17 09:34:00.000000000","message":"-1\n\nWe can allow a policy to disable the API feature, not sure we want this kind of a flag.\n\nBut I could be missing something?","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8be036fa278e8f7556fff053d49939daa4ed26bf","unresolved":false,"context_lines":[{"line_number":57,"context_line":"  Nova compute node\u0027s nova.conf file."},{"line_number":58,"context_line":"* The allow_live_resize‏ config option must be set to True in the"},{"line_number":59,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":60,"context_line":"  this blueprint."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Project Priority"},{"line_number":63,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a0c5dc1_fb5e4075","line":60,"in_reply_to":"3ab451fb_37e298d6","updated":"2015-05-12 18:28:32.000000000","message":"It is true what you are saying, but what I was thinking about, was that not all the compute nodes might be able to support this feature (e.g. nodes that do not meet the minimum hypervisor version requirement. See Use Cases section. Will add note about this.","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d708ba2ff40c284e03fcbed7b89d51b8e4e1c73f","unresolved":false,"context_lines":[{"line_number":58,"context_line":"* The allow_live_resize‏ config option must be set to True in the"},{"line_number":59,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":60,"context_line":"  this blueprint."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Project Priority"},{"line_number":63,"context_line":"-----------------"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_170c3c93","line":61,"updated":"2015-04-17 09:34:00.000000000","message":"So there is another option here...\n\nYou can add as many resources as possible via \"hotplug\", but ensure that the guest is able to get the rest when it is rebooted via the API?\n\nThe idea being you can live-migrate to a new host, reserve the space in the compute manager, and complete the resize with a final reboot, when the user is ready.\n\nMaybe its possible that we make resize confirm do the reboot for live-resize?\n\nMaybe we have an option to skip the reboot, if we know that everything has been hotplugged?","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8be036fa278e8f7556fff053d49939daa4ed26bf","unresolved":false,"context_lines":[{"line_number":58,"context_line":"* The allow_live_resize‏ config option must be set to True in the"},{"line_number":59,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":60,"context_line":"  this blueprint."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Project Priority"},{"line_number":63,"context_line":"-----------------"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a0c5dc1_894a5982","line":61,"in_reply_to":"3ab451fb_170c3c93","updated":"2015-05-12 18:28:32.000000000","message":"I\u0027m not sure I understand this comment. \n\nFirst of all, I wouldn\u0027t say a resource is \"hot-pluggable\" if it isn\u0027t usable while running and if it requires a reboot to be actually usable.\n\nSecondly, I think live-resize should fail if a resource is not hot-pluggable.","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d708ba2ff40c284e03fcbed7b89d51b8e4e1c73f","unresolved":false,"context_lines":[{"line_number":78,"context_line":"\u0027Use Cases\u0027 section above, an exception should be raised. Checking if the"},{"line_number":79,"context_line":"flavor is appropriate should be performed as early as possible (nova-api),"},{"line_number":80,"context_line":"while the allow_resize_to_same_host and allow_live_resize‏ config options should"},{"line_number":81,"context_line":"be checked in the ComputeManager."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"If a live resize is appropriate, during resize, the virt drivers must:"},{"line_number":84,"context_line":"* Avoid stoping and destroying the instance."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_57c76412","line":81,"updated":"2015-04-17 09:34:00.000000000","message":"Slight issue, please describe the HTTP response code for this error, it should be the same as live-migrate \"not possible\" errors.\n\nI think you can follow the current live-migrate pattern here, and the conductor task that deals with checking this and returning to the API as quickly as possible.\n\nMaybe we could use virt driver capabilities to automatically reject live resizes in the compute manager for drivers without this implemented. Although a NotImplemented method in the base class might be good enough.","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8be036fa278e8f7556fff053d49939daa4ed26bf","unresolved":false,"context_lines":[{"line_number":78,"context_line":"\u0027Use Cases\u0027 section above, an exception should be raised. Checking if the"},{"line_number":79,"context_line":"flavor is appropriate should be performed as early as possible (nova-api),"},{"line_number":80,"context_line":"while the allow_resize_to_same_host and allow_live_resize‏ config options should"},{"line_number":81,"context_line":"be checked in the ComputeManager."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"If a live resize is appropriate, during resize, the virt drivers must:"},{"line_number":84,"context_line":"* Avoid stoping and destroying the instance."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a0c5dc1_4cb6af8b","line":81,"in_reply_to":"3ab451fb_57c76412","updated":"2015-05-12 18:28:32.000000000","message":"Well, since nova-api call will be the same as nova resize and nova resize already expects the status codes: (400, 404, 409). Same for live-migrate.\n\nI\u0027m ok with adding 406 - Not Acceptable, but 409 - Conflict might work as well. (406 sounds better though).\n\nAs for the NotImplemented method in the base class, it was already suggested at L103, where you suggested to leave it out. :)","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"37f09bbd3e9bc2a99652af321e4b04f091abbaea","unresolved":false,"context_lines":[{"line_number":85,"context_line":"* Avoid creating another ephemeral disk."},{"line_number":86,"context_line":"* Avoid creating a new instance and attaching a config drive to it, since it"},{"line_number":87,"context_line":"  was never destroyed."},{"line_number":88,"context_line":"* Avoid starting the instance, since it was never stoped."},{"line_number":89,"context_line":"* Perform live resize."},{"line_number":90,"context_line":"* Avoid creating a new instance and attaching a config drive to it, since it"},{"line_number":91,"context_line":"  was never destroyed."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aa53dc9_8a0ae177","line":88,"updated":"2015-04-09 13:04:21.000000000","message":"stopped","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"d8dad0106abad481b4b62a88debfac0fbff32e56","unresolved":false,"context_lines":[{"line_number":85,"context_line":"* Avoid creating another ephemeral disk."},{"line_number":86,"context_line":"* Avoid creating a new instance and attaching a config drive to it, since it"},{"line_number":87,"context_line":"  was never destroyed."},{"line_number":88,"context_line":"* Avoid starting the instance, since it was never stoped."},{"line_number":89,"context_line":"* Perform live resize."},{"line_number":90,"context_line":"* Avoid creating a new instance and attaching a config drive to it, since it"},{"line_number":91,"context_line":"  was never destroyed."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_b6459818","line":88,"in_reply_to":"9aa53dc9_8a0ae177","updated":"2015-04-16 23:26:47.000000000","message":"Done","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d708ba2ff40c284e03fcbed7b89d51b8e4e1c73f","unresolved":false,"context_lines":[{"line_number":93,"context_line":"* It should not terminate the connection for any of the instance\u0027s volumes,"},{"line_number":94,"context_line":"since they are still in use and the instance can actively use them."},{"line_number":95,"context_line":"* Since the resize occurs on the same host, avoid calling finish_resize through"},{"line_number":96,"context_line":"compute_rpcapi and call the method locally."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"At the ComputeManager level, if the given live boolean is False, then a cold"},{"line_number":99,"context_line":"resize will be performed; the behaviour doesn\u0027t change. If it True, then it"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_176d5c04","line":96,"updated":"2015-04-17 09:34:00.000000000","message":"I think it would be better to describe what you *should* do, its almost a separate parallel code path for 90% of the virt driver calls (picks random number out of the air).\n\nNow because we don\u0027t create a new VM, we need to discuss what resize revert will do? Maybe its just not possible, and thats fine (i think).","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d708ba2ff40c284e03fcbed7b89d51b8e4e1c73f","unresolved":false,"context_lines":[{"line_number":100,"context_line":"will call the virt driver\u0027s \u0027live_resize\u0027 method instead."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"The \u0027live_resize\u0027 method will be added to the ComputeDriver and will raise a"},{"line_number":103,"context_line":"NotImplementedError and will be overriden by the virt drivers."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"There are a few changes that needs to be applied to the virt drivers in order"},{"line_number":106,"context_line":"to support this feature. These changes should be defined in a separate"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_d75ed444","line":103,"updated":"2015-04-17 09:34:00.000000000","message":"Lets leave this detail out, and see what looks best in the code.","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8be036fa278e8f7556fff053d49939daa4ed26bf","unresolved":false,"context_lines":[{"line_number":100,"context_line":"will call the virt driver\u0027s \u0027live_resize\u0027 method instead."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"The \u0027live_resize\u0027 method will be added to the ComputeDriver and will raise a"},{"line_number":103,"context_line":"NotImplementedError and will be overriden by the virt drivers."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"There are a few changes that needs to be applied to the virt drivers in order"},{"line_number":106,"context_line":"to support this feature. These changes should be defined in a separate"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a0c5dc1_16ca0ba2","line":103,"in_reply_to":"3ab451fb_d75ed444","updated":"2015-05-12 18:28:32.000000000","message":"Done","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d708ba2ff40c284e03fcbed7b89d51b8e4e1c73f","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"There are a few changes that needs to be applied to the virt drivers in order"},{"line_number":106,"context_line":"to support this feature. These changes should be defined in a separate"},{"line_number":107,"context_line":"blueprint for each virt driver."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Alternatives"},{"line_number":110,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_b72228b8","line":107,"updated":"2015-04-17 09:34:00.000000000","message":"Can we please include one implementation in this blueprint.\n\nThe key issue, is we need to pick one where we can have tests on every commit to test the feature.","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8be036fa278e8f7556fff053d49939daa4ed26bf","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"There are a few changes that needs to be applied to the virt drivers in order"},{"line_number":106,"context_line":"to support this feature. These changes should be defined in a separate"},{"line_number":107,"context_line":"blueprint for each virt driver."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Alternatives"},{"line_number":110,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a0c5dc1_16f32b0c","line":107,"in_reply_to":"3ab451fb_b72228b8","updated":"2015-05-12 18:28:32.000000000","message":"Will do when there is an agreement on this blueprint.","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"37f09bbd3e9bc2a99652af321e4b04f091abbaea","unresolved":false,"context_lines":[{"line_number":119,"context_line":"REST API impact"},{"line_number":120,"context_line":"---------------"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"To use this feature, users will have to use the nova resize --live command."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"Security impact"},{"line_number":125,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9aa53dc9_75a3fe00","line":122,"updated":"2015-04-09 13:04:21.000000000","message":"we talked about microversion above\nit should be more specific here","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"d8dad0106abad481b4b62a88debfac0fbff32e56","unresolved":false,"context_lines":[{"line_number":119,"context_line":"REST API impact"},{"line_number":120,"context_line":"---------------"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"To use this feature, users will have to use the nova resize --live command."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"Security impact"},{"line_number":125,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ab451fb_d6e6e4e7","line":122,"in_reply_to":"9aa53dc9_75a3fe00","updated":"2015-04-16 23:26:47.000000000","message":"good idea.","commit_id":"d131594072d0e4947ad592aa3855940eb751a396"}],"specs/mitaka/approved/instance-live-resize.rst":[{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"7d21e9f73753173d0259172255b1a40766810d7f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"|                   |    Disk     |  Memory  | VCPUs  |"},{"line_number":32,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":33,"context_line":"| **Hyper-V**       | ✓ [1][2][3] | ✓ [3][4] | X      |"},{"line_number":34,"context_line":"+-------------------+-------------+----------+--------+"},{"line_number":35,"context_line":"| **KVM + Libvirt** | ✓ [5]       | ✓ [6][7] | ✓ [8]  |"},{"line_number":36,"context_line":"+-------------------+-------------+----------+--------+"},{"line_number":37,"context_line":"| **VMWare**        | ✓ [9]       | ✓ [10]   | ✓ [11] |"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a2ca52d_b797808f","line":34,"updated":"2015-10-14 15:35:51.000000000","message":"I am not sure if the libvirt + KVM feature is truly enabled yet?","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8d5284a5e01d35d741ac6df7269fcd78ce9613e7","unresolved":false,"context_lines":[{"line_number":31,"context_line":"|                   |    Disk     |  Memory  | VCPUs  |"},{"line_number":32,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":33,"context_line":"| **Hyper-V**       | ✓ [1][2][3] | ✓ [3][4] | X      |"},{"line_number":34,"context_line":"+-------------------+-------------+----------+--------+"},{"line_number":35,"context_line":"| **KVM + Libvirt** | ✓ [5]       | ✓ [6][7] | ✓ [8]  |"},{"line_number":36,"context_line":"+-------------------+-------------+----------+--------+"},{"line_number":37,"context_line":"| **VMWare**        | ✓ [9]       | ✓ [10]   | ✓ [11] |"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a26ad4f_d3103551","line":34,"in_reply_to":"5a2ca52d_b797808f","updated":"2015-10-28 03:55:49.000000000","message":"What exactly do you mean? According to the references I\u0027ve added, Memory hotplug has been around since June 2014. Disk resize, I\u0027ve also done myself, via lvm. CPU hot plug is a bit more guest specific, seems to be working more on Linux based OSes.","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"7d21e9f73753173d0259172255b1a40766810d7f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"  that host, a live migration to that host should be performed first."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"**Phase III.** Live migration resize."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"* This concept combines both ideas of live migrate and live resize. The"},{"line_number":85,"context_line":"  instance should be resized while live migrating (WIP)."},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a2ca52d_f7ddf842","line":83,"updated":"2015-10-14 15:35:51.000000000","message":"This also probably requires a hypervisor enabling of the feature(libvirt + kvm) ?","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8d5284a5e01d35d741ac6df7269fcd78ce9613e7","unresolved":false,"context_lines":[{"line_number":80,"context_line":"  that host, a live migration to that host should be performed first."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"**Phase III.** Live migration resize."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"* This concept combines both ideas of live migrate and live resize. The"},{"line_number":85,"context_line":"  instance should be resized while live migrating (WIP)."},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a26ad4f_334de972","line":83,"in_reply_to":"5a2ca52d_f7ddf842","updated":"2015-10-28 03:55:49.000000000","message":"you mean live migration needs to be enabled first?","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":19305,"name":"xs3c","email":"maker1108@163.com","username":"Y"},"change_message_id":"527fa61a74736e62002eae2ce1c215ab3531036a","unresolved":false,"context_lines":[{"line_number":90,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":91,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":92,"context_line":"  memory resize)."},{"line_number":93,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":94,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":95,"context_line":"  created with boot from volume."},{"line_number":96,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"}],"source_content_type":"text/x-rst","patch_set":9,"id":"da85f559_d929e78a","line":93,"updated":"2015-11-16 08:06:47.000000000","message":"If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent also should be enabled in image metadata.","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"07dcea4a7841109a2c3750d89703a30c498c661c","unresolved":false,"context_lines":[{"line_number":90,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":91,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":92,"context_line":"  memory resize)."},{"line_number":93,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":94,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":95,"context_line":"  created with boot from volume."},{"line_number":96,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"}],"source_content_type":"text/x-rst","patch_set":9,"id":"ba8a016a_1a4e93c1","line":93,"in_reply_to":"da85f559_d929e78a","updated":"2015-11-23 12:59:41.000000000","message":"Done","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"7d21e9f73753173d0259172255b1a40766810d7f","unresolved":false,"context_lines":[{"line_number":93,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":94,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":95,"context_line":"  created with boot from volume."},{"line_number":96,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":97,"context_line":"  not supported by all hypervisors."},{"line_number":98,"context_line":"* The number of vCPUs must remain the same, as live adding vCPUs is not"},{"line_number":99,"context_line":"  supported by all hypervisors."}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a2ca52d_a6166fef","line":96,"updated":"2015-10-14 15:35:51.000000000","message":"https://raobharata.wordpress.com/2015/10/09/memory-hotplug-support-in-powerkvm/\n\nIf you look at this post, it states that there\u0027s a need for a maxmemory specification at the time of VM boot, along with a DIM slot specification as well. How do you have a plan to support such a use case?\n\nHow about support of hotplugging into specific NUMA nodes? Would you like to keep it as a TODO for the future?","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":19305,"name":"xs3c","email":"maker1108@163.com","username":"Y"},"change_message_id":"07c7a6778cc59c7db0bb9f120369f6cf905858a9","unresolved":false,"context_lines":[{"line_number":93,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":94,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":95,"context_line":"  created with boot from volume."},{"line_number":96,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":97,"context_line":"  not supported by all hypervisors."},{"line_number":98,"context_line":"* The number of vCPUs must remain the same, as live adding vCPUs is not"},{"line_number":99,"context_line":"  supported by all hypervisors."}],"source_content_type":"text/x-rst","patch_set":9,"id":"da85f559_8e123308","line":96,"in_reply_to":"1a26ad4f_73760140","updated":"2015-11-16 07:55:01.000000000","message":"For kvm, If your old flavor does not contain a NUMA topology, you would be not able to add more memory.","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8d5284a5e01d35d741ac6df7269fcd78ce9613e7","unresolved":false,"context_lines":[{"line_number":93,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":94,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":95,"context_line":"  created with boot from volume."},{"line_number":96,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":97,"context_line":"  not supported by all hypervisors."},{"line_number":98,"context_line":"* The number of vCPUs must remain the same, as live adding vCPUs is not"},{"line_number":99,"context_line":"  supported by all hypervisors."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a26ad4f_73760140","line":96,"in_reply_to":"5a2ca52d_a6166fef","updated":"2015-10-28 03:55:49.000000000","message":"Hm, thanks for the link, I\u0027ll take a look.\n\nAs for hotplugging into specific NUMA nodes, I do not have knowledge of this on the other hypervisors, but one of the requirements for NUMA-aware instances on Windows / Hyper-V Server 2012 / 2012 R2, is that they do not have Dynamic Memory enabled, meaning no memory live-resize. Seems that for Hyper-V Server 2016, memory live-resize doesn\u0027t require Dynamic Memory.\n\nAnyways, the new flavor must still contain a NUMA topology, in which the NUMA node memory allocation should be at least equal to the old flavor\u0027s NUMA node memory allocation. But from the compute node\u0027s perspective, this could prove to be a difficult task, as the physical NUMA nodes could not accomodate the resize, as they can have different levels of occupied memory.\n\nAt the moment, I would really like this feature to get approved and implemented for normal instances, afterwards we can discuss for NUMA aware instances.","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"902951f8ca8a2d906312c3ac9bab2a6721d72391","unresolved":false,"context_lines":[{"line_number":97,"context_line":"  not supported by all hypervisors."},{"line_number":98,"context_line":"* The number of vCPUs must remain the same, as live adding vCPUs is not"},{"line_number":99,"context_line":"  supported by all hypervisors."},{"line_number":100,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":101,"context_line":"  Nova compute node\u0027s ``nova.conf`` file (Phase I)."},{"line_number":102,"context_line":"* The allow_live_resize‏ config option must be set to True in the"},{"line_number":103,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_5821874c","line":100,"updated":"2015-11-04 22:46:31.000000000","message":"Just curious, \n1. wouldn\u0027t resize happen by default on same host first? or \n2. is it like if this option is specified, we will ignore the migration object and always try to resize on same host?\nif #1, then do we need this config option?","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"85a0c7e2ef0e8c2bbd1ac5f3e2acbcc5f66b5df8","unresolved":false,"context_lines":[{"line_number":97,"context_line":"  not supported by all hypervisors."},{"line_number":98,"context_line":"* The number of vCPUs must remain the same, as live adding vCPUs is not"},{"line_number":99,"context_line":"  supported by all hypervisors."},{"line_number":100,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":101,"context_line":"  Nova compute node\u0027s ``nova.conf`` file (Phase I)."},{"line_number":102,"context_line":"* The allow_live_resize‏ config option must be set to True in the"},{"line_number":103,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"}],"source_content_type":"text/x-rst","patch_set":9,"id":"da85f559_4bf21471","line":100,"in_reply_to":"fa80f949_5821874c","updated":"2015-11-09 20:48:10.000000000","message":"1. the resize happens wherever the scheduler decides it happens.\n\n2. if allow_resize_to_same_host is False, resize will not be allowed to happen on the same host (it won\u0027t force it to happen on the same host), even if the scheduler chose the same host for the operation.","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"7d21e9f73753173d0259172255b1a40766810d7f","unresolved":false,"context_lines":[{"line_number":103,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":104,"context_line":"  this blueprint and will have the default value False. The reason is that not"},{"line_number":105,"context_line":"  all the compute nodes will be able to support this feature (e.g.: compute"},{"line_number":106,"context_line":"  nodes that that not meet the minimum hypervisor version)."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Live downsizing will be proposed and implemented later."},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a2ca52d_d236cae6","line":106,"updated":"2015-10-14 15:35:51.000000000","message":"Do you really need a config option to do this?\nCan this not be done like this: \nhttps://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L386","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8d5284a5e01d35d741ac6df7269fcd78ce9613e7","unresolved":false,"context_lines":[{"line_number":103,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":104,"context_line":"  this blueprint and will have the default value False. The reason is that not"},{"line_number":105,"context_line":"  all the compute nodes will be able to support this feature (e.g.: compute"},{"line_number":106,"context_line":"  nodes that that not meet the minimum hypervisor version)."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Live downsizing will be proposed and implemented later."},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a26ad4f_93ef1db0","line":106,"in_reply_to":"5a2ca52d_d236cae6","updated":"2015-10-28 03:55:49.000000000","message":"Interesting. Well, another usecase for this option would be that, some users might not want to allow this feature on certain compute nodes. But we could do something similar to what you suggested.\n\nAlternatively, there is a spec for exposing host capabilities and this feature could fit there as well. This could also save some time / execution, as this host capability could be checked at the api level, returning an error if the host capability is not supported.","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"7d21e9f73753173d0259172255b1a40766810d7f","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"Primary assignee:"},{"line_number":222,"context_line":"  \u003ccbelu@cloudbasesolutions.com\u003e"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Work Items"},{"line_number":225,"context_line":"----------"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a2ca52d_bcdc40e5","line":223,"updated":"2015-10-14 15:35:51.000000000","message":"More than happy to help in implementation of this feature, if you need help :)","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":19305,"name":"xs3c","email":"maker1108@163.com","username":"Y"},"change_message_id":"07c7a6778cc59c7db0bb9f120369f6cf905858a9","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"Primary assignee:"},{"line_number":222,"context_line":"  \u003ccbelu@cloudbasesolutions.com\u003e"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Work Items"},{"line_number":225,"context_line":"----------"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"da85f559_0b8f15cd","line":223,"in_reply_to":"1a26ad4f_d33cb531","updated":"2015-11-16 07:55:01.000000000","message":"I am implementing it in libvirt driver. :)","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"f90915e2d33166ef68954840fe03bb2d7f7894ad","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"Primary assignee:"},{"line_number":222,"context_line":"  \u003ccbelu@cloudbasesolutions.com\u003e"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Work Items"},{"line_number":225,"context_line":"----------"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"da85f559_d6b3ffe7","line":223,"in_reply_to":"1a26ad4f_d33cb531","updated":"2015-11-10 04:57:17.000000000","message":"I can sign up for VMware implementation :)","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8d5284a5e01d35d741ac6df7269fcd78ce9613e7","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"Primary assignee:"},{"line_number":222,"context_line":"  \u003ccbelu@cloudbasesolutions.com\u003e"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Work Items"},{"line_number":225,"context_line":"----------"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1a26ad4f_d33cb531","line":223,"in_reply_to":"5a2ca52d_bcdc40e5","updated":"2015-10-28 03:55:49.000000000","message":"Sure, my original plan was to tackle this feature on Hyper-V first, then try to do it in libvirt. But I\u0027m not really familiar with the libvirt driver, so any help there is appreciated.\n\nBut currently, the biggest help I need right now, is support in getting this feature approved. :)","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"07dcea4a7841109a2c3750d89703a30c498c661c","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"Primary assignee:"},{"line_number":222,"context_line":"  \u003ccbelu@cloudbasesolutions.com\u003e"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Work Items"},{"line_number":225,"context_line":"----------"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"ba8a016a_fd286987","line":223,"in_reply_to":"da85f559_0b8f15cd","updated":"2015-11-23 12:59:41.000000000","message":"Great, I\u0027ll add the Other contributors section when you\u0027ve uploaded the driver implementation. :)","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"a89bc94dacd3b3ca1261e141d9d5b037132dd86a","unresolved":false,"context_lines":[{"line_number":221,"context_line":"Primary assignee:"},{"line_number":222,"context_line":"  \u003ccbelu@cloudbasesolutions.com\u003e"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Work Items"},{"line_number":225,"context_line":"----------"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"As described in the \u0027Proposed change\u0027 section. The blueprint will be split over"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7a740942_57987b1b","line":224,"updated":"2015-12-10 14:53:44.000000000","message":"@xs3c: When you say you are implementing it in the libvirt driver - do you happen to have a spec out for it?\nI am interested in knowing how you would do the maxMemory and dim slot specifications during the guest boot up for libvirt?\n\nhttp://libvirt.org/formatdomain.html\n\nI read through the maxMemory section on the above link.","commit_id":"d865563d270bd03b78c5f3fb64896443506c4866"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"4eb8873e908818f487a02cf81903c9080ab0c61d","unresolved":false,"context_lines":[{"line_number":60,"context_line":"-----------------"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"None"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Proposed change"},{"line_number":65,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a8ffd7b_d6370dfd","line":63,"updated":"2015-11-27 16:46:54.000000000","message":"nit: the priority section isn\u0027t required anymore","commit_id":"f57a1d3ff0d2649804876187b27051516223f4a6"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"661908b0a9529764c44e29eb997f1401fcecdc22","unresolved":false,"context_lines":[{"line_number":60,"context_line":"-----------------"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"None"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Proposed change"},{"line_number":65,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a8ffd7b_35da9d79","line":63,"in_reply_to":"9a8ffd7b_d6370dfd","updated":"2015-12-01 12:13:11.000000000","message":"Done","commit_id":"f57a1d3ff0d2649804876187b27051516223f4a6"},{"author":{"_account_id":18832,"name":"Wei Yang","email":"wei.yang@easystack.cn","username":"wyang"},"change_message_id":"3228bdd288b3e3dfde2b63d780bd4130829c7e1d","unresolved":false,"context_lines":[{"line_number":97,"context_line":"  created with boot from volume."},{"line_number":98,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":99,"context_line":"  not supported by all hypervisors."},{"line_number":100,"context_line":"* The number of vCPUs must remain the same, as live adding vCPUs is not"},{"line_number":101,"context_line":"  supported by all hypervisors."},{"line_number":102,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":103,"context_line":"  Nova compute node\u0027s ``nova.conf`` file (Phase I)."}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a8ffd7b_39aecf81","line":100,"updated":"2015-11-26 11:26:01.000000000","message":"qemu/kvm supports live adding vCPUs. I push a specs in mitaka:\nhttps://review.openstack.org/#/c/249012/\n\nYou can set hw:max_vcpus\u003dxx to extra spec of flavor to support the feature.","commit_id":"f57a1d3ff0d2649804876187b27051516223f4a6"},{"author":{"_account_id":6772,"name":"Stephen Gordon","email":"sgordon@redhat.com","username":"sgordon"},"change_message_id":"9f2fbaf41a315ca356e6490ff7847a3f1130b1c3","unresolved":false,"context_lines":[{"line_number":97,"context_line":"  created with boot from volume."},{"line_number":98,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":99,"context_line":"  not supported by all hypervisors."},{"line_number":100,"context_line":"* The number of vCPUs must remain the same, as live adding vCPUs is not"},{"line_number":101,"context_line":"  supported by all hypervisors."},{"line_number":102,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":103,"context_line":"  Nova compute node\u0027s ``nova.conf`` file (Phase I)."}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a8ffd7b_651f8508","line":100,"in_reply_to":"9a8ffd7b_39aecf81","updated":"2015-11-27 18:17:43.000000000","message":"Based on the matrix above QEMU/KVM was not the hypervisor listed as missing this functionality though. Having to specify max vcpus would also seem to be a case of leaking KVM-specific implementation details up to the user no?","commit_id":"f57a1d3ff0d2649804876187b27051516223f4a6"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"661908b0a9529764c44e29eb997f1401fcecdc22","unresolved":false,"context_lines":[{"line_number":97,"context_line":"  created with boot from volume."},{"line_number":98,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":99,"context_line":"  not supported by all hypervisors."},{"line_number":100,"context_line":"* The number of vCPUs must remain the same, as live adding vCPUs is not"},{"line_number":101,"context_line":"  supported by all hypervisors."},{"line_number":102,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":103,"context_line":"  Nova compute node\u0027s ``nova.conf`` file (Phase I)."}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a8ffd7b_b078db90","line":100,"in_reply_to":"9a8ffd7b_651f8508","updated":"2015-12-01 12:13:11.000000000","message":"Agree, it seems a bit driver specific, IMO.","commit_id":"f57a1d3ff0d2649804876187b27051516223f4a6"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"4eb8873e908818f487a02cf81903c9080ab0c61d","unresolved":false,"context_lines":[{"line_number":105,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":106,"context_line":"  this blueprint and will have the default value False. The reason is that not"},{"line_number":107,"context_line":"  all the compute nodes will be able to support this feature (e.g.: compute"},{"line_number":108,"context_line":"  nodes that that not meet the minimum hypervisor version)."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Live downsizing will be proposed and implemented later."},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a8ffd7b_9970d6a5","line":108,"updated":"2015-11-27 16:46:54.000000000","message":"nit: remove one that, please","commit_id":"f57a1d3ff0d2649804876187b27051516223f4a6"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"661908b0a9529764c44e29eb997f1401fcecdc22","unresolved":false,"context_lines":[{"line_number":105,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":106,"context_line":"  this blueprint and will have the default value False. The reason is that not"},{"line_number":107,"context_line":"  all the compute nodes will be able to support this feature (e.g.: compute"},{"line_number":108,"context_line":"  nodes that that not meet the minimum hypervisor version)."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Live downsizing will be proposed and implemented later."},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a8ffd7b_f55175d9","line":108,"in_reply_to":"9a8ffd7b_9970d6a5","updated":"2015-12-01 12:13:11.000000000","message":"Done","commit_id":"f57a1d3ff0d2649804876187b27051516223f4a6"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"4eb8873e908818f487a02cf81903c9080ab0c61d","unresolved":false,"context_lines":[{"line_number":140,"context_line":"      since they are still in use and the instance can actively use them."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"  At the ComputeManager level, if the given \u0027live\u0027 boolean is False, then a"},{"line_number":143,"context_line":"  cold resize will be performed; the behaviour doesn\u0027t change. If it True, then"},{"line_number":144,"context_line":"  it will call the virt driver\u0027s \u0027live_resize\u0027 method instead."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"nova ComputeDriver:"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a8ffd7b_591fce07","line":143,"updated":"2015-11-27 16:46:54.000000000","message":"nit: it is True","commit_id":"f57a1d3ff0d2649804876187b27051516223f4a6"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"661908b0a9529764c44e29eb997f1401fcecdc22","unresolved":false,"context_lines":[{"line_number":140,"context_line":"      since they are still in use and the instance can actively use them."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"  At the ComputeManager level, if the given \u0027live\u0027 boolean is False, then a"},{"line_number":143,"context_line":"  cold resize will be performed; the behaviour doesn\u0027t change. If it True, then"},{"line_number":144,"context_line":"  it will call the virt driver\u0027s \u0027live_resize\u0027 method instead."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"nova ComputeDriver:"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a8ffd7b_952b4933","line":143,"in_reply_to":"9a8ffd7b_591fce07","updated":"2015-12-01 12:13:11.000000000","message":"Done","commit_id":"f57a1d3ff0d2649804876187b27051516223f4a6"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"4eb8873e908818f487a02cf81903c9080ab0c61d","unresolved":false,"context_lines":[{"line_number":171,"context_line":""},{"line_number":172,"context_line":"If live resize is not applicable because of the restrictions defined in the"},{"line_number":173,"context_line":"above, an exception should be raised and a HTTP response with status code 406"},{"line_number":174,"context_line":"(HTTPNotAcceptable) should be returned."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Security impact"},{"line_number":177,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a8ffd7b_593eee28","line":174,"updated":"2015-11-27 16:46:54.000000000","message":"I am not sure that the 406 is the right return code to use.\ncan you clarify what restrictions are you referring here?","commit_id":"f57a1d3ff0d2649804876187b27051516223f4a6"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"661908b0a9529764c44e29eb997f1401fcecdc22","unresolved":false,"context_lines":[{"line_number":171,"context_line":""},{"line_number":172,"context_line":"If live resize is not applicable because of the restrictions defined in the"},{"line_number":173,"context_line":"above, an exception should be raised and a HTTP response with status code 406"},{"line_number":174,"context_line":"(HTTPNotAcceptable) should be returned."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Security impact"},{"line_number":177,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9a8ffd7b_905d97ee","line":174,"in_reply_to":"9a8ffd7b_593eee28","updated":"2015-12-01 12:13:11.000000000","message":"The restrictions defined above, in the ProposedChange section (flavor must be bigger than the current one, os_live_resize image property must be set)","commit_id":"f57a1d3ff0d2649804876187b27051516223f4a6"},{"author":{"_account_id":14287,"name":"Waldemar Znoinski","email":"wznoinsk@redhat.com","username":"wznoinsk"},"change_message_id":"0eb482e460149313de7a4ff74573eddfac7407c7","unresolved":false,"context_lines":[{"line_number":42,"context_line":"Minimum hypervisor version required:"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* Hyper-V: Windows Hyper-V / Server 2012 R2: 6.3"},{"line_number":45,"context_line":"* KVM / Libvirt: 2.1"},{"line_number":46,"context_line":"* VMWare: 5.1"},{"line_number":47,"context_line":"* Xen: 5.5.0"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_5822cd02","line":45,"range":{"start_line":45,"start_character":0,"end_line":45,"end_character":20},"updated":"2015-12-02 10:29:47.000000000","message":"did you mean qemu(-kvm) 2.1 or libvirt 1.2 instead?","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"fe33c8a3df11956f0b3883571b95ac82652f2223","unresolved":false,"context_lines":[{"line_number":42,"context_line":"Minimum hypervisor version required:"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* Hyper-V: Windows Hyper-V / Server 2012 R2: 6.3"},{"line_number":45,"context_line":"* KVM / Libvirt: 2.1"},{"line_number":46,"context_line":"* VMWare: 5.1"},{"line_number":47,"context_line":"* Xen: 5.5.0"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_d3520435","line":45,"in_reply_to":"9a8ffd7b_5822cd02","updated":"2015-12-02 13:16:58.000000000","message":"Done","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b1bf71508cb6509094c11002aa2714815b6378bf","unresolved":false,"context_lines":[{"line_number":82,"context_line":"* The image should contain a property called ``os_live_resize``, which will"},{"line_number":83,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":84,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":85,"context_line":"  memory resize)."},{"line_number":86,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":87,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":88,"context_line":"  created with boot from volume."}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_2bf7548c","line":85,"updated":"2015-12-02 14:15:14.000000000","message":"maybe add one into capabilities like libvirt here?\n\ncapabilities \u003d {\n    \"has_imagecache\": True,\n    \"supports_recreate\": True,\n    \"supports_migrate_to_same_host\": False\n}","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"b13e274939e3c27a59115cc6a92e8ff14b99300a","unresolved":false,"context_lines":[{"line_number":82,"context_line":"* The image should contain a property called ``os_live_resize``, which will"},{"line_number":83,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":84,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":85,"context_line":"  memory resize)."},{"line_number":86,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":87,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":88,"context_line":"  created with boot from volume."}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_6d148c4c","line":85,"in_reply_to":"9a8ffd7b_2bf7548c","updated":"2015-12-02 15:53:18.000000000","message":"I don\u0027t see why, the image property should be checked as early as possbile - nova-api preferrably.","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b1bf71508cb6509094c11002aa2714815b6378bf","unresolved":false,"context_lines":[{"line_number":89,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":90,"context_line":"  not supported by all hypervisors."},{"line_number":91,"context_line":"* The number of vCPUs must remain the same, as live adding vCPUs is not"},{"line_number":92,"context_line":"  supported by all hypervisors."},{"line_number":93,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":94,"context_line":"  enabled in image metadata."},{"line_number":95,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_fe97c88d","line":92,"updated":"2015-12-02 14:15:14.000000000","message":"but the support matrix has ✓ for some hypervisors?","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"b13e274939e3c27a59115cc6a92e8ff14b99300a","unresolved":false,"context_lines":[{"line_number":89,"context_line":"* The given flavor must have a larger or equal memory, as live downsizing is"},{"line_number":90,"context_line":"  not supported by all hypervisors."},{"line_number":91,"context_line":"* The number of vCPUs must remain the same, as live adding vCPUs is not"},{"line_number":92,"context_line":"  supported by all hypervisors."},{"line_number":93,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":94,"context_line":"  enabled in image metadata."},{"line_number":95,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_ed007c04","line":92,"in_reply_to":"9a8ffd7b_fe97c88d","updated":"2015-12-02 15:53:18.000000000","message":"Done","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b35733276b4bd24c32d3794c80ce527137d25955","unresolved":false,"context_lines":[{"line_number":93,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":94,"context_line":"  enabled in image metadata."},{"line_number":95,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":96,"context_line":"  Nova compute node\u0027s ``nova.conf`` file (Phase I)."},{"line_number":97,"context_line":"* The allow_live_resize‏ config option must be set to True in the"},{"line_number":98,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":99,"context_line":"  this blueprint and will have the default value False. The reason is that not"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_27f2539b","line":96,"updated":"2015-12-01 21:59:42.000000000","message":"This doesn\u0027t seem necessary.  For a live-resize you don\u0027t want to consult the scheduler for a placement you just want to know if the compute has the required additional resources.  It\u0027s worth considering a new scheduler call to get this info.  For live-migrate then live-resize you\u0027re not going to the same host, otherwise you would just live-resize, so you don\u0027t need to allow resizes to the same host.","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"b3db8b4b7d277aa998b44c4057f9b9cadc6850fb","unresolved":false,"context_lines":[{"line_number":93,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":94,"context_line":"  enabled in image metadata."},{"line_number":95,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":96,"context_line":"  Nova compute node\u0027s ``nova.conf`` file (Phase I)."},{"line_number":97,"context_line":"* The allow_live_resize‏ config option must be set to True in the"},{"line_number":98,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":99,"context_line":"  this blueprint and will have the default value False. The reason is that not"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_f834e1de","line":96,"in_reply_to":"9a8ffd7b_27f2539b","updated":"2015-12-01 23:38:56.000000000","message":"Agreed, for Phase I, consulting the scheduler isn\u0027t really necessary, checking the compute node for the required additional resources should suffice, as you said.\n\nAs for Phase II, the scheduler should chose the destination host. The scheduler could chose the same host as the destination, which means that a basic Phase I live-resize is sufficient. In this scenario, this config option can come into play: allow or deny resize on the same host - for the same reason as cold resize (currently used in compute manager\u0027s _prep_resize).","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b1bf71508cb6509094c11002aa2714815b6378bf","unresolved":false,"context_lines":[{"line_number":98,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":99,"context_line":"  this blueprint and will have the default value False. The reason is that not"},{"line_number":100,"context_line":"  all the compute nodes will be able to support this feature (e.g.: compute"},{"line_number":101,"context_line":"  nodes that not meet the minimum hypervisor version)."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The following changes are necessary in order to Implement Phase I (a new spec"},{"line_number":104,"context_line":"will be proposed for Phase II):"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_dea764a5","line":101,"updated":"2015-12-02 14:15:14.000000000","message":"do we need a new filter so some unqualified one can be filtered?","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"b13e274939e3c27a59115cc6a92e8ff14b99300a","unresolved":false,"context_lines":[{"line_number":98,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":99,"context_line":"  this blueprint and will have the default value False. The reason is that not"},{"line_number":100,"context_line":"  all the compute nodes will be able to support this feature (e.g.: compute"},{"line_number":101,"context_line":"  nodes that not meet the minimum hypervisor version)."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The following changes are necessary in order to Implement Phase I (a new spec"},{"line_number":104,"context_line":"will be proposed for Phase II):"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_118b9a69","line":101,"in_reply_to":"9a8ffd7b_dea764a5","updated":"2015-12-02 15:53:18.000000000","message":"Not useful in Phase I, as the live-resize in Phase I is done on the same host, might be useful for Phase II.","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b35733276b4bd24c32d3794c80ce527137d25955","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    * Avoid creating another ephemeral disk."},{"line_number":130,"context_line":"    * Avoid starting the instance, since it was never stopped."},{"line_number":131,"context_line":"    * It should not terminate the connection for any of the instance\u0027s volumes,"},{"line_number":132,"context_line":"      since they are still in use and the instance can actively use them."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  At the ComputeManager level, if the given \u0027live\u0027 boolean is False, then a"},{"line_number":135,"context_line":"  cold resize will be performed; the behaviour doesn\u0027t change. If it True, then"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_a94a9581","line":132,"updated":"2015-12-01 21:59:42.000000000","message":"With all of these differences it would probably make more sense to have a separate compute manager method for this.","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"b3db8b4b7d277aa998b44c4057f9b9cadc6850fb","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    * Avoid creating another ephemeral disk."},{"line_number":130,"context_line":"    * Avoid starting the instance, since it was never stopped."},{"line_number":131,"context_line":"    * It should not terminate the connection for any of the instance\u0027s volumes,"},{"line_number":132,"context_line":"      since they are still in use and the instance can actively use them."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  At the ComputeManager level, if the given \u0027live\u0027 boolean is False, then a"},{"line_number":135,"context_line":"  cold resize will be performed; the behaviour doesn\u0027t change. If it True, then"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_9db347e9","line":132,"in_reply_to":"9a8ffd7b_a94a9581","updated":"2015-12-01 23:38:56.000000000","message":"Yeah, I agree, it would make things a lot easier.","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b1bf71508cb6509094c11002aa2714815b6378bf","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  At the ComputeManager level, if the given \u0027live\u0027 boolean is False, then a"},{"line_number":135,"context_line":"  cold resize will be performed; the behaviour doesn\u0027t change. If it True, then"},{"line_number":136,"context_line":"  it will call the virt driver\u0027s \u0027live_resize\u0027 method instead."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"nova ComputeDriver:"},{"line_number":139,"context_line":"  ``live_resize`` method will be added, which will be implemented by the virt"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_e1172d43","line":136,"updated":"2015-12-02 14:15:14.000000000","message":"just curious:\nif the host can\u0027t support live-resize\nwhether a resize can be performed instead","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"b13e274939e3c27a59115cc6a92e8ff14b99300a","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  At the ComputeManager level, if the given \u0027live\u0027 boolean is False, then a"},{"line_number":135,"context_line":"  cold resize will be performed; the behaviour doesn\u0027t change. If it True, then"},{"line_number":136,"context_line":"  it will call the virt driver\u0027s \u0027live_resize\u0027 method instead."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"nova ComputeDriver:"},{"line_number":139,"context_line":"  ``live_resize`` method will be added, which will be implemented by the virt"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_f1d85620","line":136,"in_reply_to":"9a8ffd7b_b73de390","updated":"2015-12-02 15:53:18.000000000","message":"@jichenjc: the point of live-resize is to have high availability for the instances in question. doing a cold resize would defeat the purpose. :)\n\nas Waldermar said, you can call a cold migration, if you really want.","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":14287,"name":"Waldemar Znoinski","email":"wznoinsk@redhat.com","username":"wznoinsk"},"change_message_id":"83ae534f3a150e36ad6e9fa4a374fb3ac75ab2b5","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"  At the ComputeManager level, if the given \u0027live\u0027 boolean is False, then a"},{"line_number":135,"context_line":"  cold resize will be performed; the behaviour doesn\u0027t change. If it True, then"},{"line_number":136,"context_line":"  it will call the virt driver\u0027s \u0027live_resize\u0027 method instead."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"nova ComputeDriver:"},{"line_number":139,"context_line":"  ``live_resize`` method will be added, which will be implemented by the virt"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_b73de390","line":136,"in_reply_to":"9a8ffd7b_e1172d43","updated":"2015-12-02 14:46:46.000000000","message":"AFAIU if you\u0027ve request \u0027live\u0027 resize and it\u0027s not supported you\u0027ll get an error, you can still request \u0027a resize\u0027 (no live) if you want in another cmdline/api call","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b1bf71508cb6509094c11002aa2714815b6378bf","unresolved":false,"context_lines":[{"line_number":156,"context_line":"REST API impact"},{"line_number":157,"context_line":"---------------"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"To use this feature, users will have to use the nova resize --live command."},{"line_number":160,"context_line":"Changes to nova-api will have to be made in order to accept this new flag."},{"line_number":161,"context_line":"In order for the nova resize API to accept the new flag, a new microversion"},{"line_number":162,"context_line":"increment will be needed."}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_fe7828c6","line":159,"updated":"2015-12-02 14:15:14.000000000","message":"usually this might need request and response info instead \nnova resize --live command","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"b13e274939e3c27a59115cc6a92e8ff14b99300a","unresolved":false,"context_lines":[{"line_number":156,"context_line":"REST API impact"},{"line_number":157,"context_line":"---------------"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"To use this feature, users will have to use the nova resize --live command."},{"line_number":160,"context_line":"Changes to nova-api will have to be made in order to accept this new flag."},{"line_number":161,"context_line":"In order for the nova resize API to accept the new flag, a new microversion"},{"line_number":162,"context_line":"increment will be needed."}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_d7a182f9","line":159,"in_reply_to":"9a8ffd7b_fe7828c6","updated":"2015-12-02 15:53:18.000000000","message":"Done","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b1bf71508cb6509094c11002aa2714815b6378bf","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"If live resize is not applicable because of the restrictions defined in the"},{"line_number":165,"context_line":"above, an exception should be raised and a HTTP response with status code 406"},{"line_number":166,"context_line":"(HTTPNotAcceptable) should be returned."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Security impact"},{"line_number":169,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_1e764cd7","line":166,"updated":"2015-12-02 14:15:14.000000000","message":"http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html\nHTTPNotAcceptable is not a right value to return here\n\nguess HTTPConflict or something might better","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"b13e274939e3c27a59115cc6a92e8ff14b99300a","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"If live resize is not applicable because of the restrictions defined in the"},{"line_number":165,"context_line":"above, an exception should be raised and a HTTP response with status code 406"},{"line_number":166,"context_line":"(HTTPNotAcceptable) should be returned."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Security impact"},{"line_number":169,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_71b3069b","line":166,"in_reply_to":"9a8ffd7b_1e764cd7","updated":"2015-12-02 15:53:18.000000000","message":"Done","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":14287,"name":"Waldemar Znoinski","email":"wznoinsk@redhat.com","username":"wznoinsk"},"change_message_id":"0eb482e460149313de7a4ff74573eddfac7407c7","unresolved":false,"context_lines":[{"line_number":194,"context_line":"nova.conf, setting the config option allow_live_resize‏ to True. Also, this"},{"line_number":195,"context_line":"feature cannot be used if the allow_resize_to_same_host config option is set"},{"line_number":196,"context_line":"to False (Phase I)."},{"line_number":197,"context_line":"Users will have to add the image properties ``os_live_resize`` and in order to"},{"line_number":198,"context_line":"properly use this feature."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_d8ca3d1a","line":197,"range":{"start_line":197,"start_character":44,"end_line":197,"end_character":61},"updated":"2015-12-02 10:29:47.000000000","message":"do we need/care about the guest os support for hot-cpu-add? do we want to do anything (via metadata/config(-drive)/else) if the instance was scheduled with os_live_resize image property present?","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":14287,"name":"Waldemar Znoinski","email":"wznoinsk@redhat.com","username":"wznoinsk"},"change_message_id":"83ae534f3a150e36ad6e9fa4a374fb3ac75ab2b5","unresolved":false,"context_lines":[{"line_number":194,"context_line":"nova.conf, setting the config option allow_live_resize‏ to True. Also, this"},{"line_number":195,"context_line":"feature cannot be used if the allow_resize_to_same_host config option is set"},{"line_number":196,"context_line":"to False (Phase I)."},{"line_number":197,"context_line":"Users will have to add the image properties ``os_live_resize`` and in order to"},{"line_number":198,"context_line":"properly use this feature."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_b7a163fa","line":197,"in_reply_to":"9a8ffd7b_79de9712","updated":"2015-12-02 14:46:46.000000000","message":"sorry, my questions were to vague, let me try to fix that...\n\n1. do we need to check whether guest OS (from the image we\u0027ve been supplied and already has os_live_resize property) supports live_resize before we start scheduling or should we leave it up to the operator to \u0027know what he\u0027s doing\u0027 if he decides to add \u0027os_live_resize\u0027 property to the image \n\n2. do we need to check whether the guest os is \u0027prepared\u0027 (having qemu-guest-agent, distribution-specific discovery of new hardware and automatic enablement of them, or custom scripts) because we can schedule the instance and mark it \u0027yes, this instance supports os-live-resize\u0027\n\n3. do we need to save any information (max cpus, max memory and disk for virt drivers that rely on these settings) in the config-drive/metadata service of/for the guest? - for the purpose of qemu-guest-agent or custom scripts that enable automatic enablement of just hot-added cpu in the guest","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"b13e274939e3c27a59115cc6a92e8ff14b99300a","unresolved":false,"context_lines":[{"line_number":194,"context_line":"nova.conf, setting the config option allow_live_resize‏ to True. Also, this"},{"line_number":195,"context_line":"feature cannot be used if the allow_resize_to_same_host config option is set"},{"line_number":196,"context_line":"to False (Phase I)."},{"line_number":197,"context_line":"Users will have to add the image properties ``os_live_resize`` and in order to"},{"line_number":198,"context_line":"properly use this feature."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_7441b462","line":197,"in_reply_to":"9a8ffd7b_b7a163fa","updated":"2015-12-02 15:53:18.000000000","message":"1. For Phase I, which we currently trying to get approved, there won\u0027t be a need for the scheduler, as the resize will occur on the same host the instance exists. Also, the os_live_resize image property is a list of live-resize-able resources acceptable by the image\u0027s guest OS. If the operator set the image property os_live_resize\u003d\u0027memory,disk\u0027, then only the memory and disk are live resizable.\n\n2. yeah, the guest OS must be capable to be live-resized. If qemu requires  qemu-guest-agent in order for the live-resize to work properly, then the operator must check for it before setting the image property. For now, it\u0027s up to the operator to decide whether a guest is capable of live-resize or not.\n\n3. This wasn\u0027t necessary for any of the drivers, or at least, no one reported as necessary. Does qemu-guest-agent require this sort of information?","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"fe33c8a3df11956f0b3883571b95ac82652f2223","unresolved":false,"context_lines":[{"line_number":194,"context_line":"nova.conf, setting the config option allow_live_resize‏ to True. Also, this"},{"line_number":195,"context_line":"feature cannot be used if the allow_resize_to_same_host config option is set"},{"line_number":196,"context_line":"to False (Phase I)."},{"line_number":197,"context_line":"Users will have to add the image properties ``os_live_resize`` and in order to"},{"line_number":198,"context_line":"properly use this feature."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a8ffd7b_79de9712","line":197,"in_reply_to":"9a8ffd7b_d8ca3d1a","updated":"2015-12-02 13:16:58.000000000","message":"Yeah, not all guests support hot-cpu-add. AFAIK, Windows guests do not support this at the moment.\n\nas for the metadata / configdrive, it shouldn\u0027t require any new data.","commit_id":"843db17882919f9325c3bc967e918fbda3312481"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"89ba2b96518a92b66d8da3fe767c02dcc6beb81a","unresolved":false,"context_lines":[{"line_number":28,"context_line":"The Support Matrix for online resize is as follows:"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"+-------------------+-------------+----------+--------+"},{"line_number":31,"context_line":"|                   |    Disk     |  Memory  | VCPUs  |"},{"line_number":32,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":33,"context_line":"| **Hyper-V**       | ✓ [1][2][3] | ✓ [3][4] | X      |"},{"line_number":34,"context_line":"+-------------------+-------------+----------+--------+"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_a923c604","line":31,"updated":"2015-12-03 17:59:47.000000000","message":"Nit: we should consider PCI device hotplug, and a few other bits eventually.\n\nMaybe the reverse question is interesting, when do we know we can\u0027t resize between two different flavors.","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"933761f1ef31a4eb93d0a8e1bda4d6c2803f1aae","unresolved":false,"context_lines":[{"line_number":28,"context_line":"The Support Matrix for online resize is as follows:"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"+-------------------+-------------+----------+--------+"},{"line_number":31,"context_line":"|                   |    Disk     |  Memory  | VCPUs  |"},{"line_number":32,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":33,"context_line":"| **Hyper-V**       | ✓ [1][2][3] | ✓ [3][4] | X      |"},{"line_number":34,"context_line":"+-------------------+-------------+----------+--------+"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_da0db238","line":31,"in_reply_to":"7a740942_a923c604","updated":"2015-12-03 18:47:28.000000000","message":"Interesting point. I do not have a lot of information of this particular subject, how many of the drivers would be able to do this and what the restrictions would be. Unfortunately, we still have to implement the PCI passthrough in Hyper-V, I should have submitted a spec for that. :(","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"89ba2b96518a92b66d8da3fe767c02dcc6beb81a","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"This blueprint will be implemented into 2 phases."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"**Phase I.** Live resize on the same instance."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* In this phase, live resize will only be possible on the same host. If there"},{"line_number":70,"context_line":"  are not enough resources available, live resize should not be performed."}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_a9ff4633","line":67,"updated":"2015-12-03 17:59:47.000000000","message":"Nit: do you mean s/instance/host/?","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"933761f1ef31a4eb93d0a8e1bda4d6c2803f1aae","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"This blueprint will be implemented into 2 phases."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"**Phase I.** Live resize on the same instance."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* In this phase, live resize will only be possible on the same host. If there"},{"line_number":70,"context_line":"  are not enough resources available, live resize should not be performed."}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_1a2b3a84","line":67,"in_reply_to":"7a740942_a9ff4633","updated":"2015-12-03 18:47:28.000000000","message":"Yep, my bad.","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"89ba2b96518a92b66d8da3fe767c02dcc6beb81a","unresolved":false,"context_lines":[{"line_number":69,"context_line":"* In this phase, live resize will only be possible on the same host. If there"},{"line_number":70,"context_line":"  are not enough resources available, live resize should not be performed."},{"line_number":71,"context_line":"* If the resize occurs on the same host, avoid calling finish_resize through"},{"line_number":72,"context_line":"  compute_rpcapi and call the method locally."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"**Phase II.** Live migrate, then live resize."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_89892acd","line":72,"updated":"2015-12-03 17:59:47.000000000","message":"honestly, this is probably a different code path all together, but lets get to that later...","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"933761f1ef31a4eb93d0a8e1bda4d6c2803f1aae","unresolved":false,"context_lines":[{"line_number":69,"context_line":"* In this phase, live resize will only be possible on the same host. If there"},{"line_number":70,"context_line":"  are not enough resources available, live resize should not be performed."},{"line_number":71,"context_line":"* If the resize occurs on the same host, avoid calling finish_resize through"},{"line_number":72,"context_line":"  compute_rpcapi and call the method locally."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"**Phase II.** Live migrate, then live resize."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_7a411e39","line":72,"in_reply_to":"7a740942_89892acd","updated":"2015-12-03 18:47:28.000000000","message":"Hm, this sounds more of a Phase II thing.","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"89ba2b96518a92b66d8da3fe767c02dcc6beb81a","unresolved":false,"context_lines":[{"line_number":99,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":100,"context_line":"  this blueprint and will have the default value False. The reason is that not"},{"line_number":101,"context_line":"  all the compute nodes will be able to support this feature (e.g.: compute"},{"line_number":102,"context_line":"  nodes that not meet the minimum hypervisor version)."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"nova API:"},{"line_number":105,"context_line":"  See `REST API impact` section."}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_a97426cf","line":102,"updated":"2015-12-03 17:59:47.000000000","message":"hmm... this feels very hacky, the compute node should be able to know this, and report it as a capability.\n\nFor the API, live-resize just needs its own policy.","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"933761f1ef31a4eb93d0a8e1bda4d6c2803f1aae","unresolved":false,"context_lines":[{"line_number":99,"context_line":"  Nova compute node\u0027s nova.conf file. This config option will be introduced by"},{"line_number":100,"context_line":"  this blueprint and will have the default value False. The reason is that not"},{"line_number":101,"context_line":"  all the compute nodes will be able to support this feature (e.g.: compute"},{"line_number":102,"context_line":"  nodes that not meet the minimum hypervisor version)."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"nova API:"},{"line_number":105,"context_line":"  See `REST API impact` section."}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_9a65eae2","line":102,"in_reply_to":"7a740942_a97426cf","updated":"2015-12-03 18:47:28.000000000","message":"Makes sense. This could tie-in with my other \"expose host capabilities\" spec.\n\nAlso, if we\u0027re going to make a new API for this, it will be easier to update the policy for it.","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"89ba2b96518a92b66d8da3fe767c02dcc6beb81a","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"  This blueprint will impact python-novaclient (adding --live flag for resize)"},{"line_number":112,"context_line":"  and will also require a microversion increment, as the API will be impacted,"},{"line_number":113,"context_line":"  adding the live boolean."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"nova DB:"},{"line_number":116,"context_line":"  See `Data model impact` section."}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_c943b26b","line":113,"updated":"2015-12-03 17:59:47.000000000","message":"So the current resize include resize confirm/revert.\n\nI don\u0027t see how we can support that with \"live\" resize, so maybe we should create a whole new API for this:\n\nnova resize-live \u003cserver\u003e \u003cflavor\u003e etc...","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"933761f1ef31a4eb93d0a8e1bda4d6c2803f1aae","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"  This blueprint will impact python-novaclient (adding --live flag for resize)"},{"line_number":112,"context_line":"  and will also require a microversion increment, as the API will be impacted,"},{"line_number":113,"context_line":"  adding the live boolean."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"nova DB:"},{"line_number":116,"context_line":"  See `Data model impact` section."}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_fa042ec7","line":113,"in_reply_to":"7a740942_c943b26b","updated":"2015-12-03 18:47:28.000000000","message":"Yeah, I am starting to believe so myself. I was trying to re-use as many code paths as possible, but it might probably add unneeded complexity..\n\nquestion: this would require a microversion bump, right? I am a bit uncertain about this, I know it is required if anything changes in the existent API, not sure about adding APIs.","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"89ba2b96518a92b66d8da3fe767c02dcc6beb81a","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"  Because there are many differences between a cold resize and a live resize,"},{"line_number":133,"context_line":"  a new method must be implemented, called ``live_resize``, which will be"},{"line_number":134,"context_line":"  called through RPC by the conductor."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"nova ComputeDriver:"},{"line_number":137,"context_line":"  ``live_resize`` method will be added, which will be implemented by the virt"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_890cca43","line":134,"updated":"2015-12-03 17:59:47.000000000","message":"I would turn the above bullet points around, describe what happens for a live-resize rather than trying to say what is different with a regular resize.","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"933761f1ef31a4eb93d0a8e1bda4d6c2803f1aae","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"  Because there are many differences between a cold resize and a live resize,"},{"line_number":133,"context_line":"  a new method must be implemented, called ``live_resize``, which will be"},{"line_number":134,"context_line":"  called through RPC by the conductor."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"nova ComputeDriver:"},{"line_number":137,"context_line":"  ``live_resize`` method will be added, which will be implemented by the virt"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_3a0396ba","line":134,"in_reply_to":"7a740942_890cca43","updated":"2015-12-03 18:47:28.000000000","message":"Done","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"89ba2b96518a92b66d8da3fe767c02dcc6beb81a","unresolved":false,"context_lines":[{"line_number":165,"context_line":"Body::"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"  {"},{"line_number":168,"context_line":"    \"resize\" : {"},{"line_number":169,"context_line":"        \"flavorRef\" : \"2\","},{"line_number":170,"context_line":"        \"live\": \"True\","},{"line_number":171,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_c41f175a","line":168,"updated":"2015-12-03 17:59:47.000000000","message":"See above, I am tempted by resize_live here, or live_resize.","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"933761f1ef31a4eb93d0a8e1bda4d6c2803f1aae","unresolved":false,"context_lines":[{"line_number":165,"context_line":"Body::"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"  {"},{"line_number":168,"context_line":"    \"resize\" : {"},{"line_number":169,"context_line":"        \"flavorRef\" : \"2\","},{"line_number":170,"context_line":"        \"live\": \"True\","},{"line_number":171,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_fa2bce31","line":168,"in_reply_to":"7a740942_c41f175a","updated":"2015-12-03 18:47:28.000000000","message":"Done","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"89ba2b96518a92b66d8da3fe767c02dcc6beb81a","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"If live resize is not applicable because of the restrictions defined in the"},{"line_number":177,"context_line":"above, an exception should be raised and a HTTP response with status code 409"},{"line_number":178,"context_line":"(HTTPConflict) should be returned."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Security impact"},{"line_number":181,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_e45c93ef","line":178,"updated":"2015-12-03 17:59:47.000000000","message":"Not sure thats following the rules, I think it should be 400 (bad request):\nhttp://specs.openstack.org/openstack/api-wg/guidelines/http.html#failure-code-clarifications\n\nBut I would like a second opinion on that.","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"89ba2b96518a92b66d8da3fe767c02dcc6beb81a","unresolved":false,"context_lines":[{"line_number":176,"context_line":"If live resize is not applicable because of the restrictions defined in the"},{"line_number":177,"context_line":"above, an exception should be raised and a HTTP response with status code 409"},{"line_number":178,"context_line":"(HTTPConflict) should be returned."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Security impact"},{"line_number":181,"context_line":"---------------"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_84a34f9e","line":179,"updated":"2015-12-03 17:59:47.000000000","message":"Can you please discuss what happens for resize confirm and resize revert in this context?","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"933761f1ef31a4eb93d0a8e1bda4d6c2803f1aae","unresolved":false,"context_lines":[{"line_number":176,"context_line":"If live resize is not applicable because of the restrictions defined in the"},{"line_number":177,"context_line":"above, an exception should be raised and a HTTP response with status code 409"},{"line_number":178,"context_line":"(HTTPConflict) should be returned."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Security impact"},{"line_number":181,"context_line":"---------------"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_7a959e3e","line":179,"in_reply_to":"7a740942_84a34f9e","updated":"2015-12-03 18:47:28.000000000","message":"If we\u0027re going to have a separate API for this, as you suggested, I don\u0027t think it will be needed.","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"89ba2b96518a92b66d8da3fe767c02dcc6beb81a","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"The guest OS must have a mechanism to detect when the disk size changes in"},{"line_number":194,"context_line":"order to do a `growroot` style operation. At the moment, cloud-init and"},{"line_number":195,"context_line":"cloudbase-init performs this check on boot."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Performance Impact"},{"line_number":198,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_e4b813e8","line":195,"updated":"2015-12-03 17:59:47.000000000","message":"Nit: thats a nice to have, the user could just reboot, at their leisure to use the extra space, I don\u0027t this we have to help them use the extra space, just provide it.","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"933761f1ef31a4eb93d0a8e1bda4d6c2803f1aae","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"The guest OS must have a mechanism to detect when the disk size changes in"},{"line_number":194,"context_line":"order to do a `growroot` style operation. At the moment, cloud-init and"},{"line_number":195,"context_line":"cloudbase-init performs this check on boot."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Performance Impact"},{"line_number":198,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a740942_9ac72a45","line":195,"in_reply_to":"7a740942_e4b813e8","updated":"2015-12-03 18:47:28.000000000","message":"Sure. makes sense. But as far as cloudbase-init goes, it is something that we can do.","commit_id":"b931813feb47958bfca6611e5933264ee6fbbfce"},{"author":{"_account_id":7400,"name":"Tracy Jones","email":"tjones@vmware.com","username":"tracyajones"},"change_message_id":"99be34617d11327e6fb88a528c2640c160043807","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* Hyper-V: Windows Hyper-V / Server 2012 R2: 6.3"},{"line_number":45,"context_line":"* QEUMU (-KVM): 2.1"},{"line_number":46,"context_line":"* VMWare: 5.1"},{"line_number":47,"context_line":"* Xen: 5.5.0"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"As it can be observed from the Support Matrix above, live resize for disk and"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a710552_a7b5367f","line":46,"updated":"2015-12-14 19:26:14.000000000","message":"should be 5.5 for VMware","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"abe8bafe7bf09d0ef985446d6a42fc2e7a7969e8","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* Hyper-V: Windows Hyper-V / Server 2012 R2: 6.3"},{"line_number":45,"context_line":"* QEUMU (-KVM): 2.1"},{"line_number":46,"context_line":"* VMWare: 5.1"},{"line_number":47,"context_line":"* Xen: 5.5.0"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"As it can be observed from the Support Matrix above, live resize for disk and"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a710552_1918011d","line":46,"in_reply_to":"5a710552_a7b5367f","updated":"2015-12-15 14:53:29.000000000","message":"please do note this is the minimum hypervisor version required. Ofcourse, newer versions will be supported and recommended.","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"0d951089daddfa78b15926649e5af9960460f880","unresolved":false,"context_lines":[{"line_number":44,"context_line":"* Hyper-V: Windows Hyper-V / Server 2012 R2: 6.3"},{"line_number":45,"context_line":"* QEUMU (-KVM): 2.1"},{"line_number":46,"context_line":"* VMWare: 5.1"},{"line_number":47,"context_line":"* Xen: 5.5.0"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"As it can be observed from the Support Matrix above, live resize for disk and"},{"line_number":50,"context_line":"memory is supported by all the drivers and this feature can be introduced in"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_d99d0f67","line":47,"updated":"2015-12-13 20:20:48.000000000","message":"5.5.0 is out of support - should be 6.5.0","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"abe8bafe7bf09d0ef985446d6a42fc2e7a7969e8","unresolved":false,"context_lines":[{"line_number":44,"context_line":"* Hyper-V: Windows Hyper-V / Server 2012 R2: 6.3"},{"line_number":45,"context_line":"* QEUMU (-KVM): 2.1"},{"line_number":46,"context_line":"* VMWare: 5.1"},{"line_number":47,"context_line":"* Xen: 5.5.0"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"As it can be observed from the Support Matrix above, live resize for disk and"},{"line_number":50,"context_line":"memory is supported by all the drivers and this feature can be introduced in"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a710552_19c6c167","line":47,"in_reply_to":"7a740942_d99d0f67","updated":"2015-12-15 14:53:29.000000000","message":"ditto.","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"9d33678742ce74ef183fee2ce78f63b480d2906f","unresolved":false,"context_lines":[{"line_number":59,"context_line":"Proposed change"},{"line_number":60,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"This spec addreses live resize to a bigger spec (upsize). Live downsizing will"},{"line_number":63,"context_line":"be proposed and implemented later."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"This blueprint will be implemented into 2 phases."}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_d8d2fed0","line":62,"updated":"2015-12-12 06:10:38.000000000","message":"typo: addresses","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"abe8bafe7bf09d0ef985446d6a42fc2e7a7969e8","unresolved":false,"context_lines":[{"line_number":59,"context_line":"Proposed change"},{"line_number":60,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"This spec addreses live resize to a bigger spec (upsize). Live downsizing will"},{"line_number":63,"context_line":"be proposed and implemented later."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"This blueprint will be implemented into 2 phases."}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a710552_b988cd23","line":62,"in_reply_to":"7a740942_d8d2fed0","updated":"2015-12-15 14:53:29.000000000","message":"Done","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b30b5581a1d080398b557b629a272ad211aa108d","unresolved":false,"context_lines":[{"line_number":92,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":93,"context_line":"  enabled in image metadata."},{"line_number":94,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":95,"context_line":"  Nova compute node\u0027s ``nova.conf`` file."},{"line_number":96,"context_line":"* The hypervisor must be capable of this feature and it must report it as a"},{"line_number":97,"context_line":"  capability. If the hypervisor does not report this capability, the action"},{"line_number":98,"context_line":"  will raise an exception."}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_88dc2fe5","line":95,"updated":"2015-12-11 21:13:34.000000000","message":"This should be left out.","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9d8eff7a096802c7d749b26a05dd76c05e9930d6","unresolved":false,"context_lines":[{"line_number":92,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":93,"context_line":"  enabled in image metadata."},{"line_number":94,"context_line":"* The allow_resize_to_same_host config option must be set to True in the"},{"line_number":95,"context_line":"  Nova compute node\u0027s ``nova.conf`` file."},{"line_number":96,"context_line":"* The hypervisor must be capable of this feature and it must report it as a"},{"line_number":97,"context_line":"  capability. If the hypervisor does not report this capability, the action"},{"line_number":98,"context_line":"  will raise an exception."}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_ffa6c4bf","line":95,"in_reply_to":"7a740942_88dc2fe5","updated":"2015-12-12 01:35:50.000000000","message":"Done","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b30b5581a1d080398b557b629a272ad211aa108d","unresolved":false,"context_lines":[{"line_number":95,"context_line":"  Nova compute node\u0027s ``nova.conf`` file."},{"line_number":96,"context_line":"* The hypervisor must be capable of this feature and it must report it as a"},{"line_number":97,"context_line":"  capability. If the hypervisor does not report this capability, the action"},{"line_number":98,"context_line":"  will raise an exception."},{"line_number":99,"context_line":"* In order for the nova live-resize API call to be accepted, it must be enabled"},{"line_number":100,"context_line":"  in the ``/etc/nova/policy.json`` file."},{"line_number":101,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_e8e93380","line":98,"updated":"2015-12-11 21:13:34.000000000","message":"This makes this dependent on https://review.openstack.org/#/c/222200/ right?","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9d8eff7a096802c7d749b26a05dd76c05e9930d6","unresolved":false,"context_lines":[{"line_number":95,"context_line":"  Nova compute node\u0027s ``nova.conf`` file."},{"line_number":96,"context_line":"* The hypervisor must be capable of this feature and it must report it as a"},{"line_number":97,"context_line":"  capability. If the hypervisor does not report this capability, the action"},{"line_number":98,"context_line":"  will raise an exception."},{"line_number":99,"context_line":"* In order for the nova live-resize API call to be accepted, it must be enabled"},{"line_number":100,"context_line":"  in the ``/etc/nova/policy.json`` file."},{"line_number":101,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_dfa188aa","line":98,"in_reply_to":"7a740942_e8e93380","updated":"2015-12-12 01:35:50.000000000","message":"not a blocking dependency, but yes. I have mentioned the spec you mention in the References section. For Phase I, it can be easily checked at the compute manager / driver level. Having the host capabilities exposed will be crucial for Phase II, where the scheduler will have to select a proper host on which to perform the live-resize on.","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a44ef6a96e5de735af72e0f02574c7132e102554","unresolved":false,"context_lines":[{"line_number":164,"context_line":"If live resize is not applicable because of the restrictions defined in the"},{"line_number":165,"context_line":"above, an exception will be raised and a HTTP response with status code 400"},{"line_number":166,"context_line":"(Bad Request) will be returned. Otherwise, an HTTP response with status code"},{"line_number":167,"context_line":"202 (Accepted) will be returned."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Security impact"},{"line_number":170,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_0c7756d5","line":167,"updated":"2015-12-10 10:58:35.000000000","message":"I think we probably need to talk about the server task_state that will be changed for this operation. But given the deadline, lets call that something that could be fixed in a follow up patch.\n\nWould also be good to mention errors being reported using os-instance-actions when the resources are not available, etc.","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9d8eff7a096802c7d749b26a05dd76c05e9930d6","unresolved":false,"context_lines":[{"line_number":164,"context_line":"If live resize is not applicable because of the restrictions defined in the"},{"line_number":165,"context_line":"above, an exception will be raised and a HTTP response with status code 400"},{"line_number":166,"context_line":"(Bad Request) will be returned. Otherwise, an HTTP response with status code"},{"line_number":167,"context_line":"202 (Accepted) will be returned."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Security impact"},{"line_number":170,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_df2bc8e9","line":167,"in_reply_to":"7a740942_0c7756d5","updated":"2015-12-12 01:35:50.000000000","message":"True, I didn\u0027t give it much thought, as the previous PS was proposing extending the resize API instead of proposing the live-resize API, which means the task_state was already being set to resize.\n\nI am not too sure what what you mean by the errors being reported using os-instance-actions. Do you mean all the possible error codes and messages that can be returned by the API?","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a44ef6a96e5de735af72e0f02574c7132e102554","unresolved":false,"context_lines":[{"line_number":194,"context_line":"To use this feature, the users will have to enable it from the compute node\u0027s"},{"line_number":195,"context_line":"nova.conf, setting the config option allow_live_resize‏ to True. Also, this"},{"line_number":196,"context_line":"feature cannot be used if the allow_resize_to_same_host config option is set"},{"line_number":197,"context_line":"to False."},{"line_number":198,"context_line":"Users will have to add the image properties ``os_live_resize`` and in order to"},{"line_number":199,"context_line":"properly use this feature."},{"line_number":200,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_06d09252","line":197,"updated":"2015-12-10 10:58:35.000000000","message":"I am not sure about this, but we could call that implementation details.\n\n\nThis should really just be controlled by API policy, or flavor extra_specs rather than hidden config variables.\n\nAlso allow_resize_to_same_host is really about resize rather than live-resize.","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b30b5581a1d080398b557b629a272ad211aa108d","unresolved":false,"context_lines":[{"line_number":194,"context_line":"To use this feature, the users will have to enable it from the compute node\u0027s"},{"line_number":195,"context_line":"nova.conf, setting the config option allow_live_resize‏ to True. Also, this"},{"line_number":196,"context_line":"feature cannot be used if the allow_resize_to_same_host config option is set"},{"line_number":197,"context_line":"to False."},{"line_number":198,"context_line":"Users will have to add the image properties ``os_live_resize`` and in order to"},{"line_number":199,"context_line":"properly use this feature."},{"line_number":200,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_681a23c8","line":197,"in_reply_to":"7a740942_06d09252","updated":"2015-12-11 21:13:34.000000000","message":"Why is it necessary to enable this?  And I agree about allow_resize_to_same_host, I think that should be completely ignored here.","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"c81ee208dc8db8085cb190e948af0195312fd9a4","unresolved":false,"context_lines":[{"line_number":194,"context_line":"To use this feature, the users will have to enable it from the compute node\u0027s"},{"line_number":195,"context_line":"nova.conf, setting the config option allow_live_resize‏ to True. Also, this"},{"line_number":196,"context_line":"feature cannot be used if the allow_resize_to_same_host config option is set"},{"line_number":197,"context_line":"to False."},{"line_number":198,"context_line":"Users will have to add the image properties ``os_live_resize`` and in order to"},{"line_number":199,"context_line":"properly use this feature."},{"line_number":200,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_bd1a687b","line":197,"in_reply_to":"7a740942_3f8d2cd3","updated":"2015-12-14 05:57:12.000000000","message":"I agree with the API policy comment here. If you don\u0027t want live resize, just turn it off at the API layer instead of in nova.conf. That said, we\u0027ve shown in the past that no one will turn this on if its not on by default, so I think we should take an \"opt out\" approach to this.","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9d8eff7a096802c7d749b26a05dd76c05e9930d6","unresolved":false,"context_lines":[{"line_number":194,"context_line":"To use this feature, the users will have to enable it from the compute node\u0027s"},{"line_number":195,"context_line":"nova.conf, setting the config option allow_live_resize‏ to True. Also, this"},{"line_number":196,"context_line":"feature cannot be used if the allow_resize_to_same_host config option is set"},{"line_number":197,"context_line":"to False."},{"line_number":198,"context_line":"Users will have to add the image properties ``os_live_resize`` and in order to"},{"line_number":199,"context_line":"properly use this feature."},{"line_number":200,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_3f8d2cd3","line":197,"in_reply_to":"7a740942_681a23c8","updated":"2015-12-12 01:35:50.000000000","message":"Hm, I\u0027ve checked again. This config option shouldn\u0027t be added in the compute node\u0027s nova.conf file, but on the nova-api\u0027s nova.conf file. Which means that the config option is pointless for Phase I, it can be disabled by the API policy instead as John says.\n\nBut, it should be taken into account for Phase II. This config option exists and it is used. Not taking it into account might make it look... bug-ish. For example, it certainly looks strange if cold resize is not allowed to be performed on the same host, but live-resize is.\n\nAnyways, I will leave this out.","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"abe8bafe7bf09d0ef985446d6a42fc2e7a7969e8","unresolved":false,"context_lines":[{"line_number":194,"context_line":"To use this feature, the users will have to enable it from the compute node\u0027s"},{"line_number":195,"context_line":"nova.conf, setting the config option allow_live_resize‏ to True. Also, this"},{"line_number":196,"context_line":"feature cannot be used if the allow_resize_to_same_host config option is set"},{"line_number":197,"context_line":"to False."},{"line_number":198,"context_line":"Users will have to add the image properties ``os_live_resize`` and in order to"},{"line_number":199,"context_line":"properly use this feature."},{"line_number":200,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a710552_f4e73c3e","line":197,"in_reply_to":"7a740942_bd1a687b","updated":"2015-12-15 14:53:29.000000000","message":"Done","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b30b5581a1d080398b557b629a272ad211aa108d","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Primary assignee:"},{"line_number":217,"context_line":"  Claudiu Belu \u003ccbelu@cloudbasesolutions.com\u003e"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"Work Items"},{"line_number":220,"context_line":"----------"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_a83d6b2c","line":218,"updated":"2015-12-11 21:13:34.000000000","message":"As John mentioned below it would be good to have implementors for the various drivers signed up here.","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"abe8bafe7bf09d0ef985446d6a42fc2e7a7969e8","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Primary assignee:"},{"line_number":217,"context_line":"  Claudiu Belu \u003ccbelu@cloudbasesolutions.com\u003e"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"Work Items"},{"line_number":220,"context_line":"----------"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a710552_9414b8f5","line":218,"in_reply_to":"7a740942_799adb63","updated":"2015-12-15 14:53:29.000000000","message":"Done","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9d8eff7a096802c7d749b26a05dd76c05e9930d6","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Primary assignee:"},{"line_number":217,"context_line":"  Claudiu Belu \u003ccbelu@cloudbasesolutions.com\u003e"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"Work Items"},{"line_number":220,"context_line":"----------"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_bfb7dc83","line":218,"in_reply_to":"7a740942_a83d6b2c","updated":"2015-12-12 01:35:50.000000000","message":"Will do.","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"0d951089daddfa78b15926649e5af9960460f880","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Primary assignee:"},{"line_number":217,"context_line":"  Claudiu Belu \u003ccbelu@cloudbasesolutions.com\u003e"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"Work Items"},{"line_number":220,"context_line":"----------"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_799adb63","line":218,"in_reply_to":"7a740942_bfb7dc83","updated":"2015-12-13 20:20:48.000000000","message":"We\u0027ll sign up for XenServer","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a44ef6a96e5de735af72e0f02574c7132e102554","unresolved":false,"context_lines":[{"line_number":220,"context_line":"----------"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"As described in the \u0027Proposed change\u0027 section. The blueprint will be split over"},{"line_number":223,"context_line":"several commits, in order to make it easier to review, test and implement."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"Dependencies"},{"line_number":226,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_c657eac8","line":223,"updated":"2015-12-10 10:58:35.000000000","message":"Nit: this is really where you talk about the big pieces an how its split up, but I don\u0027t think you need that for this spec really.\n\nIt would be nice to be clear which virt drivers are included here, but lets just assume hyper-v and libvirt, in the first instance. Might have been good to include the libvirt person in the assignee section.","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":8190,"name":"Drew Thorstensen (thorst)","email":"thorst@us.ibm.com","username":"thorst"},"change_message_id":"6f809f8ca36479006af52015f54ada4ca676d3a1","unresolved":false,"context_lines":[{"line_number":220,"context_line":"----------"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"As described in the \u0027Proposed change\u0027 section. The blueprint will be split over"},{"line_number":223,"context_line":"several commits, in order to make it easier to review, test and implement."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"Dependencies"},{"line_number":226,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_f3f6f88d","line":223,"updated":"2015-12-12 12:32:09.000000000","message":"This doesn\u0027t need to be noted (as we\u0027re not an in-tree driver yet) but PowerVM does allow this as well and the PowerVM drivers team would work to implement support for this as well if this is approved.","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b30b5581a1d080398b557b629a272ad211aa108d","unresolved":false,"context_lines":[{"line_number":220,"context_line":"----------"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"As described in the \u0027Proposed change\u0027 section. The blueprint will be split over"},{"line_number":223,"context_line":"several commits, in order to make it easier to review, test and implement."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"Dependencies"},{"line_number":226,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_c831d75a","line":223,"in_reply_to":"7a740942_c657eac8","updated":"2015-12-11 21:13:34.000000000","message":"This should list the actual work items.","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9d8eff7a096802c7d749b26a05dd76c05e9930d6","unresolved":false,"context_lines":[{"line_number":220,"context_line":"----------"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"As described in the \u0027Proposed change\u0027 section. The blueprint will be split over"},{"line_number":223,"context_line":"several commits, in order to make it easier to review, test and implement."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"Dependencies"},{"line_number":226,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a740942_bf6efcfd","line":223,"in_reply_to":"7a740942_c831d75a","updated":"2015-12-12 01:35:50.000000000","message":"Agreed. Will do.","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"abe8bafe7bf09d0ef985446d6a42fc2e7a7969e8","unresolved":false,"context_lines":[{"line_number":220,"context_line":"----------"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"As described in the \u0027Proposed change\u0027 section. The blueprint will be split over"},{"line_number":223,"context_line":"several commits, in order to make it easier to review, test and implement."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"Dependencies"},{"line_number":226,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a710552_d431e0a3","line":223,"in_reply_to":"7a740942_f3f6f88d","updated":"2015-12-15 14:53:29.000000000","message":"Done","commit_id":"3f7a8b4a962165bc9977d5e02a6fa802c73f357d"}],"specs/newton/approved/instance-live-resize.rst":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"769bcace26f44fa9c3e297d485d8ba902235371f","unresolved":false,"context_lines":[{"line_number":67,"context_line":"**Phase I.** Live resize on the same host."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* In this phase, live resize will only be possible on the same host. If there"},{"line_number":70,"context_line":"  are not enough resources available, live resize will not be performed."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"**Phase II.** Live migrate, then live resize."},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"7a5de9d1_6eb04af5","line":70,"updated":"2016-01-28 10:48:05.000000000","message":"It feels like some people will turn this off with policy.\n\nPhase II might be different.","commit_id":"a3d22fbfaac7ee5fa4595fa9606379e51cbff3ec"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"abe23be2967f55705f32697faed8c2ca8964bfb9","unresolved":false,"context_lines":[{"line_number":67,"context_line":"**Phase I.** Live resize on the same host."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* In this phase, live resize will only be possible on the same host. If there"},{"line_number":70,"context_line":"  are not enough resources available, live resize will not be performed."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"**Phase II.** Live migrate, then live resize."},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"7a5de9d1_c9260ace","line":70,"in_reply_to":"7a5de9d1_6eb04af5","updated":"2016-01-28 15:07:21.000000000","message":"If we can reserve a certain amount of resources for an instance\u0027s live-resize (let\u0027s say 2X, specified through flavor extra_specs), we can ensure that the live-resize won\u0027t fail because there weren\u0027t enough resources for live-resize.","commit_id":"a3d22fbfaac7ee5fa4595fa9606379e51cbff3ec"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"625d829e45fcacbe1582e561e3d672ccc89c6b89","unresolved":false,"context_lines":[{"line_number":88,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":89,"context_line":"  created with boot from volume."},{"line_number":90,"context_line":"* The given flavor must have a larger or equal memory or amount of vCPUs, as"},{"line_number":91,"context_line":"  live downsizing is not supported by all hypervisors."},{"line_number":92,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":93,"context_line":"  enabled in image metadata."},{"line_number":94,"context_line":"* The hypervisor must be capable of this feature and it must report it as a"}],"source_content_type":"text/x-rst","patch_set":18,"id":"7a5de9d1_a2964e4a","line":91,"range":{"start_line":91,"start_character":53,"end_line":91,"end_character":54},"updated":"2016-01-28 12:51:47.000000000","message":"I think we need to add some extra metadata to the flavours to control whether / how resize is allowed.\n\nIn particular for KVM, at the time you boot the guest initially you need to be able to say what maximum possible memory and vcpus you might want to use in the future.\n\nie, if you start with a flavour with 2 GB of RAM and want to be able to resize, you need to tell KVM at boot time to reserve memory mappings / slots to allow say 16 GB of RAM.\n\nSo against the original flavour we boot the guest from, we need to record at least  \u0027max_memory\u0027 and \u0027max_vcpus\u0027 values.\n\nThis would serve as a useful access control mechanism for the cloud administrator.\n\nif neither max_memory or max_vcpus are set, then any resizing of ram/cpus would be entirely forbidden.  If max_memory and max_vcpus were set, then you could you could resize *only* to target flavours whose memory/vcpus are less than or equal to the original flavour\u0027s max_memory/max_vcpus.\n\nThis allows the cloud admin to configure some flavour which permit resizing and some flavour which do not permit it.\n\nIt would also open the door to future ability to pre-reserve extra resources on the original host. ie when booting the guest with 2 GB of RAM and max_memory 4 GB, it could take a soft claim on the extra 2 GB of RAM, so that it is more likely available should a resize be needed later. Such an ability to pre-reserve resources could be toggled by another flavour extra spec property.","commit_id":"a3d22fbfaac7ee5fa4595fa9606379e51cbff3ec"},{"author":{"_account_id":17869,"name":"Ahmed ElKhouly","email":"ahmed.h.elkhouly@gmail.com","username":"ahelkhou"},"change_message_id":"a8519d9647cc7ce8d1460c6690e4acbb33b9bff9","unresolved":false,"context_lines":[{"line_number":88,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":89,"context_line":"  created with boot from volume."},{"line_number":90,"context_line":"* The given flavor must have a larger or equal memory or amount of vCPUs, as"},{"line_number":91,"context_line":"  live downsizing is not supported by all hypervisors."},{"line_number":92,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":93,"context_line":"  enabled in image metadata."},{"line_number":94,"context_line":"* The hypervisor must be capable of this feature and it must report it as a"}],"source_content_type":"text/x-rst","patch_set":18,"id":"7a5de9d1_2cdd2c6f","line":91,"range":{"start_line":91,"start_character":53,"end_line":91,"end_character":54},"in_reply_to":"7a5de9d1_3feeedb4","updated":"2016-01-29 15:24:03.000000000","message":"As an alternative to storing the original flavor against the instance, we can specify that when live-resize an instance, we ensure the max vcpu/memory values in the new flavor, if present, are less than or equal to values of the current flavor and as you have specified, whenever the max vcpu/memory values are not present, live-resize is disabled. \n\nThis way, live-resize limits always conform to the values specified in the current flavor without the need to store original flavor in the instance. \n\nSo really we have the following possible scenarios:\n(1) Current flavor has no max values defined --\u003e live-resize disabled.\n(2) Current flavor max values \u003e\u003d New flavor max values --\u003e live-resize is allowed and the subsequent live-resize operation will conform to limits defined in the new flavor.\n(3) Current flavor max values \u003c\u003d New flavor max values --\u003e live-resize disallowed.  \n(4) Current flavor max values defined and max values not present in new flavor --\u003e live-resize is allowed but subsequent live-resize shall be disabled.\n\nThis behavior will always conform to the invariant that live-resize always follow whatever is defined in the flavor(instance-type).\n\nOne catch here is that the guest will retain the original max values set during reboot. But this should not impact the behavior of live-resize as we will always check live-resize targets against the current flavor\u0027s max values, which are always guaranteed to be less or equal to original values (or not present at all).","commit_id":"a3d22fbfaac7ee5fa4595fa9606379e51cbff3ec"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"650a64cc486164b38d83fa349c15e43dffb85d20","unresolved":false,"context_lines":[{"line_number":88,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":89,"context_line":"  created with boot from volume."},{"line_number":90,"context_line":"* The given flavor must have a larger or equal memory or amount of vCPUs, as"},{"line_number":91,"context_line":"  live downsizing is not supported by all hypervisors."},{"line_number":92,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":93,"context_line":"  enabled in image metadata."},{"line_number":94,"context_line":"* The hypervisor must be capable of this feature and it must report it as a"}],"source_content_type":"text/x-rst","patch_set":18,"id":"7a5de9d1_3feeedb4","line":91,"range":{"start_line":91,"start_character":53,"end_line":91,"end_character":54},"in_reply_to":"7a5de9d1_44de7f12","updated":"2016-01-28 16:01:30.000000000","message":"Yes, good point. When we boot the image we keep a copy of the flavour against the instance, so we just need to make sure we don\u0027t ever overwrite this fields.","commit_id":"a3d22fbfaac7ee5fa4595fa9606379e51cbff3ec"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"abe23be2967f55705f32697faed8c2ca8964bfb9","unresolved":false,"context_lines":[{"line_number":88,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":89,"context_line":"  created with boot from volume."},{"line_number":90,"context_line":"* The given flavor must have a larger or equal memory or amount of vCPUs, as"},{"line_number":91,"context_line":"  live downsizing is not supported by all hypervisors."},{"line_number":92,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":93,"context_line":"  enabled in image metadata."},{"line_number":94,"context_line":"* The hypervisor must be capable of this feature and it must report it as a"}],"source_content_type":"text/x-rst","patch_set":18,"id":"7a5de9d1_44de7f12","line":91,"range":{"start_line":91,"start_character":53,"end_line":91,"end_character":54},"in_reply_to":"7a5de9d1_a2964e4a","updated":"2016-01-28 15:07:21.000000000","message":"Seems valid in my opinion and more feasible. It will also make libvirt more happy. The pre-reserve extra resources sounds like a good idea as well.\n\nOne thing that should be kept in mind, is that we don\u0027t lose those original max_vcpus and max_memory values, otherwise this mechanism would be exploitable.\n\nFor example, having the original flavor m1.tiny with the extra_spec max_memory\u003d16GB, the new flavor m2.tiny should not have max_memory\u003d32GB, otherwise we can get to 32 GB from 2 live-resizes, even though it wasn\u0027t intended to be possible.","commit_id":"a3d22fbfaac7ee5fa4595fa9606379e51cbff3ec"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"1c7c8da9b2f8512a4b0ac5198c5c3bd5c3a990f4","unresolved":false,"context_lines":[{"line_number":125,"context_line":"nova ComputeDriver:"},{"line_number":126,"context_line":"  ``live_resize`` method will be added, which will be implemented by the virt"},{"line_number":127,"context_line":"  drivers, making sure the instance is not stopped or restarted."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Alternatives"},{"line_number":130,"context_line":"------------"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"7a5de9d1_d1d1dece","line":128,"updated":"2016-01-28 12:00:47.000000000","message":"There needs to be much more detailed added to this, especially around interactions with various different ways VMs can be configured - eg NUMA, cpu pinning, huge pages, and more. For example, if 1GB huge pages are used, that restricts what possible memory sizes you can resize to - ie you can\u0027t resize to 2.5 GB of RAM. With NUMA, if the new flavour specifies a different NUMA topology from the old flavour you can\u0027t neccesarily change this on the fly in the guest.\n\nThere also needs to be detail about error handling \u0026 reporting behaviour. ie if you resize vcpus, and then try to resize memory and fail what happens. Do you pretend success even though some things failed or report failure, even though some things succeeded, or try to rollback things which succeeeded, even though rollback may also then fail or even be imposible.","commit_id":"a3d22fbfaac7ee5fa4595fa9606379e51cbff3ec"},{"author":{"_account_id":14287,"name":"Waldemar Znoinski","email":"wznoinsk@redhat.com","username":"wznoinsk"},"change_message_id":"d10ca944960cfb1b6a01b9c695459086f2ce3a7a","unresolved":false,"context_lines":[{"line_number":125,"context_line":"nova ComputeDriver:"},{"line_number":126,"context_line":"  ``live_resize`` method will be added, which will be implemented by the virt"},{"line_number":127,"context_line":"  drivers, making sure the instance is not stopped or restarted."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Alternatives"},{"line_number":130,"context_line":"------------"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"7a5de9d1_f8ea20da","line":128,"in_reply_to":"7a5de9d1_6964b648","updated":"2016-02-01 17:12:20.000000000","message":"1. I think if the resize is requested for mulpiple resources in one request and one of them failed the fulfilling of the request failed \u003d full failure. If the request is for one resource type - that\u0027s easy then.\n\n2. Should we actually try to the \u0027most problematic/not downsizable\u0027 resources first as it would make the least number of resources needed to be rolled back in case of failure?\n\n3. Additionally I think, i.e. for vcpus, there may be a way of enabling the new set of cpus but not yet letting kernel scheduler to consider it - it would be a sort of way to test the upsize with an easier downsize process.","commit_id":"a3d22fbfaac7ee5fa4595fa9606379e51cbff3ec"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"abe23be2967f55705f32697faed8c2ca8964bfb9","unresolved":false,"context_lines":[{"line_number":125,"context_line":"nova ComputeDriver:"},{"line_number":126,"context_line":"  ``live_resize`` method will be added, which will be implemented by the virt"},{"line_number":127,"context_line":"  drivers, making sure the instance is not stopped or restarted."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Alternatives"},{"line_number":130,"context_line":"------------"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"7a5de9d1_6964b648","line":128,"in_reply_to":"7a5de9d1_d1d1dece","updated":"2016-01-28 15:07:21.000000000","message":"True, but for the moment, I am only targeting the already mentioned resources from the beginning: cpus, memory, and local disk; meaning that live-resizing to a new NUMA topology won\u0027t be allowed.\n\nOfcourse, in the future of this feature, we are going to add support for live-resize for NUMA topologies, PCI hot-plugging, etc.\n\nAs for error handling in case of partial-success / partial-failure, that is a valid point and we should find a way to handle this properly. Rollback would basically also mean supporting live down-size, which is a bit outside the scope of this blueprint. I am going to investigate how each hypervisor handles this sort of errors and if they support down-size (if they do, we might attempt a graceful rollback, if possible).\n\nI am expecting down-size to be less supported than up-size (meaning that, if vcpu up-size is supported, vcpu down-size might not). In this case, It would be better to live-resize resources that can\u0027t be rolledback last.\n\nIf rollback fails, the instance\u0027s flavor will have to be updated to reflect the current state of the VM. What to do with the instance after this, I don\u0027t know at this moment.\n\nOne way to avoid such complex questions and problems, would be to enforce live-resize for only one resource type at a time. It is tedious, and a bit inconvenient, but a lot safer.","commit_id":"a3d22fbfaac7ee5fa4595fa9606379e51cbff3ec"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"a44dd325e144e7390151c65a7177910bc5b1c1ae","unresolved":false,"context_lines":[{"line_number":38,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":39,"context_line":"| **XenServer**     | ✓ [4a][4b]     | ✓ [4c]     | ✓ [4d] | ✓ [4e] |"},{"line_number":40,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Minimum hypervisor version required:"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* Hyper-V: Windows Hyper-V / Server 2012 R2: 6.3"}],"source_content_type":"text/x-rst","patch_set":20,"id":"1a122d0e_ef2edc8a","line":41,"updated":"2016-04-26 10:05:28.000000000","message":"The online resize feature is depended on Guest OS. IMO, please add below matrix for clarifying which guest OS support online resize.\n\n\n+----------+----------------+------------+--------+--------+\n|          |      Disk      |   Memory   | VCPUs  |  PCIs  |\n+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\n| CentOS   | ✓              | ✓          | ✓      | ✓     |\n+----------+----------------+------------+--------+--------+\n| SUSE     | ✓              | ✓          | X      | ✓     |\n+----------+----------------+------------+--------+--------+\n| Ubuntu   | ✓              | ✓          | ✓      | ✓     |\n+----------+----------------+------------+--------+--------+\n| Windows  | ✓              | ✓          | ✓      | ✓     |\n+----------+----------------+------------+--------+--------+\n\nReferences:\n1. http://www.cyberciti.biz/faq/debian-rhel-centos-redhat-suse-hotplug-cpu/\n2.  https://www.kernel.org/doc/Documentation/memory-hotplug.txt\n3. https://wiki.ubuntu.com/QemuDiskHotplug","commit_id":"463467e0d9416d8dd3d21888f0778194c2544142"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9fa3dac27202a5df50886e62ce0608bafc41f6fc","unresolved":false,"context_lines":[{"line_number":38,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":39,"context_line":"| **XenServer**     | ✓ [4a][4b]     | ✓ [4c]     | ✓ [4d] | ✓ [4e] |"},{"line_number":40,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Minimum hypervisor version required:"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* Hyper-V: Windows Hyper-V / Server 2012 R2: 6.3"}],"source_content_type":"text/x-rst","patch_set":20,"id":"9abb7d3a_10c354ee","line":41,"in_reply_to":"1a122d0e_ef2edc8a","updated":"2016-06-01 00:20:15.000000000","message":"Indeed, that\u0027s true and I agree. Which is why I\u0027ve mentioned below that a live-resizable guest OS must be marked as such. The image must contain the ``os_live_resize`` metadata property, which should contain a list of live-resizable resources: disk, memory, vcpus.\n\nThis matrix is rather interesting though. Where did you find out that Windows supports CPU hotplug? Do you have any link?","commit_id":"463467e0d9416d8dd3d21888f0778194c2544142"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"4d8d0c80af7c8a7cf8929ff3f7a78b296911477b","unresolved":false,"context_lines":[{"line_number":38,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":39,"context_line":"| **XenServer**     | ✓ [4a][4b]     | ✓ [4c]     | ✓ [4d] | ✓ [4e] |"},{"line_number":40,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Minimum hypervisor version required:"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* Hyper-V: Windows Hyper-V / Server 2012 R2: 6.3"}],"source_content_type":"text/x-rst","patch_set":20,"id":"9abb7d3a_a1795cca","line":41,"in_reply_to":"9abb7d3a_10c354ee","updated":"2016-06-01 02:42:52.000000000","message":"The reference is here: http://partnerweb.vmware.com/comp_guide2/pdf/VMware_GOS_Compatibility_Guide.pdf\n\nAlthough this show only hot-add CPU for Windows in VMWare.","commit_id":"463467e0d9416d8dd3d21888f0778194c2544142"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"f9acd41f7ea6ca459849d66abd94652eefbbee92","unresolved":false,"context_lines":[{"line_number":38,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":39,"context_line":"| **XenServer**     | ✓ [4a][4b]     | ✓ [4c]     | ✓ [4d] | ✓ [4e] |"},{"line_number":40,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Minimum hypervisor version required:"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* Hyper-V: Windows Hyper-V / Server 2012 R2: 6.3"}],"source_content_type":"text/x-rst","patch_set":20,"id":"9abb7d3a_802cff99","line":41,"in_reply_to":"9abb7d3a_a1795cca","updated":"2016-06-01 11:27:31.000000000","message":"Cool, thanks for the link. :)\n\nI\u0027ll have to read it. I haven\u0027t found any documentation that says CPUs can be added for Windows guests.\n\nAs for Hyper-V, I\u0027ll have to check Windows / Hyper-V Server 2016 to see if it\u0027s possible there.","commit_id":"463467e0d9416d8dd3d21888f0778194c2544142"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"a44dd325e144e7390151c65a7177910bc5b1c1ae","unresolved":false,"context_lines":[{"line_number":46,"context_line":"* VMWare: 5.5"},{"line_number":47,"context_line":"* XenServer: 6.2.0"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"As it can be observed from the Support Matrix above, live resize for disk and"},{"line_number":50,"context_line":"memory is supported by all the drivers and this feature can be introduced in"},{"line_number":51,"context_line":"their respective virt Driver."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Resizing is meant to scale instances vertically. Using the \"pets vs cattle\""}],"source_content_type":"text/x-rst","patch_set":20,"id":"1a122d0e_0f0198af","line":50,"range":{"start_line":49,"start_character":53,"end_line":50,"end_character":6},"updated":"2016-04-26 10:05:28.000000000","message":"I\u0027m wondering why do we not support online resize for vCPU? Disk, PCI, memory or vCpu is defined in flavor and it is possible to support vCpu in this spec.","commit_id":"463467e0d9416d8dd3d21888f0778194c2544142"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9fa3dac27202a5df50886e62ce0608bafc41f6fc","unresolved":false,"context_lines":[{"line_number":46,"context_line":"* VMWare: 5.5"},{"line_number":47,"context_line":"* XenServer: 6.2.0"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"As it can be observed from the Support Matrix above, live resize for disk and"},{"line_number":50,"context_line":"memory is supported by all the drivers and this feature can be introduced in"},{"line_number":51,"context_line":"their respective virt Driver."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Resizing is meant to scale instances vertically. Using the \"pets vs cattle\""}],"source_content_type":"text/x-rst","patch_set":20,"id":"9abb7d3a_d0a54c47","line":50,"range":{"start_line":49,"start_character":53,"end_line":50,"end_character":6},"in_reply_to":"1a122d0e_0f0198af","updated":"2016-06-01 00:20:15.000000000","message":"I never said that we don\u0027t support live-resize for vCPU, I\u0027ve only mentioned that disk and memory can be live-resized by ALL hypervisors.","commit_id":"463467e0d9416d8dd3d21888f0778194c2544142"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"4d8d0c80af7c8a7cf8929ff3f7a78b296911477b","unresolved":false,"context_lines":[{"line_number":46,"context_line":"* VMWare: 5.5"},{"line_number":47,"context_line":"* XenServer: 6.2.0"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"As it can be observed from the Support Matrix above, live resize for disk and"},{"line_number":50,"context_line":"memory is supported by all the drivers and this feature can be introduced in"},{"line_number":51,"context_line":"their respective virt Driver."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Resizing is meant to scale instances vertically. Using the \"pets vs cattle\""}],"source_content_type":"text/x-rst","patch_set":20,"id":"9abb7d3a_214c4c9d","line":50,"range":{"start_line":49,"start_character":53,"end_line":50,"end_character":6},"in_reply_to":"9abb7d3a_d0a54c47","updated":"2016-06-01 02:42:52.000000000","message":"Thanks, IMO I think we need to add CPU live-resize to this spec.","commit_id":"463467e0d9416d8dd3d21888f0778194c2544142"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"911dcfcff2b09592ed25d37c88b30ee45c55e9f3","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"Notifications impact"},{"line_number":200,"context_line":"--------------------"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"None"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"Other end user impact"}],"source_content_type":"text/x-rst","patch_set":20,"id":"fa0719c6_7eed8d24","line":201,"updated":"2016-03-22 15:07:22.000000000","message":"reading previous comments it seems that we need a mechanism to reserve the potential additional resources for instances booted in a resizable image, if that is still true I think that will have some implication on  quota/billing systems which they need to track that information in some way, in my mind the tracking needs to be notified.\nDoes it make sense to you?","commit_id":"463467e0d9416d8dd3d21888f0778194c2544142"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9fa3dac27202a5df50886e62ce0608bafc41f6fc","unresolved":false,"context_lines":[{"line_number":198,"context_line":""},{"line_number":199,"context_line":"Notifications impact"},{"line_number":200,"context_line":"--------------------"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"None"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"Other end user impact"}],"source_content_type":"text/x-rst","patch_set":20,"id":"9abb7d3a_b00ec838","line":201,"in_reply_to":"fa0719c6_7eed8d24","updated":"2016-06-01 00:20:15.000000000","message":"It\u0027s always about the money, right?\n\nSo, there are a couple of flavor extra specs: os:max_memory, os:max_disk, os:max_vcpus, which defines the upper constrains of live resize. Billing can be made on this, IMO.","commit_id":"463467e0d9416d8dd3d21888f0778194c2544142"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"a44dd325e144e7390151c65a7177910bc5b1c1ae","unresolved":false,"context_lines":[{"line_number":241,"context_line":"Primary assignee:"},{"line_number":242,"context_line":"  Claudiu Belu \u003ccbelu@cloudbasesolutions.com\u003e"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"Other contributors:"},{"line_number":245,"context_line":"  (libvirt) xs3c \u003cmaker1108@163.com\u003e"},{"line_number":246,"context_line":"  (libvirt) Sudipta Biswas \u003csbiswas7@in.ibm.com\u003e"},{"line_number":247,"context_line":"  (libvirt) Ahmed Elkhouly \u003cahmed.h.elkhouly@gmail.com\u003e"}],"source_content_type":"text/x-rst","patch_set":20,"id":"1a122d0e_6f85accd","line":244,"range":{"start_line":244,"start_character":0,"end_line":244,"end_character":19},"updated":"2016-04-26 10:05:28.000000000","message":"Please count me in, I\u0027m happy with libvirt work :)","commit_id":"463467e0d9416d8dd3d21888f0778194c2544142"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9fa3dac27202a5df50886e62ce0608bafc41f6fc","unresolved":false,"context_lines":[{"line_number":241,"context_line":"Primary assignee:"},{"line_number":242,"context_line":"  Claudiu Belu \u003ccbelu@cloudbasesolutions.com\u003e"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"Other contributors:"},{"line_number":245,"context_line":"  (libvirt) xs3c \u003cmaker1108@163.com\u003e"},{"line_number":246,"context_line":"  (libvirt) Sudipta Biswas \u003csbiswas7@in.ibm.com\u003e"},{"line_number":247,"context_line":"  (libvirt) Ahmed Elkhouly \u003cahmed.h.elkhouly@gmail.com\u003e"}],"source_content_type":"text/x-rst","patch_set":20,"id":"9abb7d3a_f0569028","line":244,"range":{"start_line":244,"start_character":0,"end_line":244,"end_character":19},"in_reply_to":"1a122d0e_6f85accd","updated":"2016-06-01 00:20:15.000000000","message":"Sure. :)\n\nAlthough, I\u0027ll have to update this list of contributors.","commit_id":"463467e0d9416d8dd3d21888f0778194c2544142"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"4d8d0c80af7c8a7cf8929ff3f7a78b296911477b","unresolved":false,"context_lines":[{"line_number":241,"context_line":"Primary assignee:"},{"line_number":242,"context_line":"  Claudiu Belu \u003ccbelu@cloudbasesolutions.com\u003e"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"Other contributors:"},{"line_number":245,"context_line":"  (libvirt) xs3c \u003cmaker1108@163.com\u003e"},{"line_number":246,"context_line":"  (libvirt) Sudipta Biswas \u003csbiswas7@in.ibm.com\u003e"},{"line_number":247,"context_line":"  (libvirt) Ahmed Elkhouly \u003cahmed.h.elkhouly@gmail.com\u003e"}],"source_content_type":"text/x-rst","patch_set":20,"id":"9abb7d3a_01514836","line":244,"range":{"start_line":244,"start_character":0,"end_line":244,"end_character":19},"in_reply_to":"9abb7d3a_f0569028","updated":"2016-06-01 02:42:52.000000000","message":"Thanks! :)","commit_id":"463467e0d9416d8dd3d21888f0778194c2544142"}],"specs/queens/approved/instance-live-resize.rst":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3e3da83bd89ae414b8fce586f4198c7cd97200a","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/instance-live-resize"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Hyper-V, KVM, VMWare and Xen allows users to resize both memory and local disks"},{"line_number":14,"context_line":"of the VMs while they are still running. Because of this, no down time is"},{"line_number":15,"context_line":"needed for the spawned instances when live resize is performed on the same"},{"line_number":16,"context_line":"host."}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_c690d7f0","line":13,"updated":"2017-10-03 22:35:32.000000000","message":"PowerVM too","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"54ed46e1ef87f77dedee069ae6770f7c2d10e835","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/instance-live-resize"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Hyper-V, KVM, VMWare and Xen allows users to resize both memory and local disks"},{"line_number":14,"context_line":"of the VMs while they are still running. Because of this, no down time is"},{"line_number":15,"context_line":"needed for the spawned instances when live resize is performed on the same"},{"line_number":16,"context_line":"host."}],"source_content_type":"text/x-rst","patch_set":25,"id":"5f4e5783_593293a9","line":13,"in_reply_to":"7f515b1d_c690d7f0","updated":"2017-10-10 04:15:57.000000000","message":"ok, will add powervm stuffs","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3e3da83bd89ae414b8fce586f4198c7cd97200a","unresolved":false,"context_lines":[{"line_number":31,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":32,"context_line":"|                   |      Disk      |   Memory   | VCPUs  |  PCIs  |"},{"line_number":33,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":34,"context_line":"| **Hyper-V**       | ✓ [1a][1b][1c] | ✓ [1c][1d] | X      | ✓ [1e] |"},{"line_number":35,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":36,"context_line":"| **KVM + Libvirt** | ✓ [1a]         | ✓ [2b][2c] | ✓ [2d] | ✓ [2e] |"},{"line_number":37,"context_line":"+-------------------+----------------+------------+--------+--------+"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_e67193e0","line":34,"updated":"2017-10-03 22:35:32.000000000","message":"These should be made actual links (throughout).","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"66582139f63772ff819b1af18b48a590604454f4","unresolved":false,"context_lines":[{"line_number":33,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":34,"context_line":"| **Hyper-V**       | ✓ [1a][1b][1c] | ✓ [1c][1d] | X      | ✓ [1e] |"},{"line_number":35,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":36,"context_line":"| **KVM + Libvirt** | ✓ [1a]         | ✓ [2b][2c] | ✓ [2d] | ✓ [2e] |"},{"line_number":37,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":38,"context_line":"| **VMWare**        | ✓ [3a]         | ✓ [3b]     | ✓ [3c] | ✓ [3d] |"},{"line_number":39,"context_line":"+-------------------+----------------+------------+--------+--------+"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_4ff3e574","line":36,"range":{"start_line":36,"start_character":52,"end_line":36,"end_character":59},"updated":"2017-10-03 15:28:47.000000000","message":"qemu supports cpu hotplug via https://wiki.qemu.org/Features/CPUHotplug, cpu hot-unplug requires cooperation from the guest which means it\u0027s not reliable.","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"98c4a75a9298f31f74cced8c7c602d3f3d0ef304","unresolved":false,"context_lines":[{"line_number":33,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":34,"context_line":"| **Hyper-V**       | ✓ [1a][1b][1c] | ✓ [1c][1d] | X      | ✓ [1e] |"},{"line_number":35,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":36,"context_line":"| **KVM + Libvirt** | ✓ [1a]         | ✓ [2b][2c] | ✓ [2d] | ✓ [2e] |"},{"line_number":37,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":38,"context_line":"| **VMWare**        | ✓ [3a]         | ✓ [3b]     | ✓ [3c] | ✓ [3d] |"},{"line_number":39,"context_line":"+-------------------+----------------+------------+--------+--------+"}],"source_content_type":"text/x-rst","patch_set":25,"id":"5f4e5783_9f9a2b6c","line":36,"range":{"start_line":36,"start_character":52,"end_line":36,"end_character":59},"in_reply_to":"5f4e5783_99fecbac","updated":"2017-10-10 06:05:28.000000000","message":"live-resize will only allow resizing to bigger flavors. Basically, we won\u0027t support cpu hot-unplug anyways.","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"54ed46e1ef87f77dedee069ae6770f7c2d10e835","unresolved":false,"context_lines":[{"line_number":33,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":34,"context_line":"| **Hyper-V**       | ✓ [1a][1b][1c] | ✓ [1c][1d] | X      | ✓ [1e] |"},{"line_number":35,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":36,"context_line":"| **KVM + Libvirt** | ✓ [1a]         | ✓ [2b][2c] | ✓ [2d] | ✓ [2e] |"},{"line_number":37,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":38,"context_line":"| **VMWare**        | ✓ [3a]         | ✓ [3b]     | ✓ [3c] | ✓ [3d] |"},{"line_number":39,"context_line":"+-------------------+----------------+------------+--------+--------+"}],"source_content_type":"text/x-rst","patch_set":25,"id":"5f4e5783_99fecbac","line":36,"range":{"start_line":36,"start_character":52,"end_line":36,"end_character":59},"in_reply_to":"7f515b1d_4ff3e574","updated":"2017-10-10 04:15:57.000000000","message":"ok, will add some note about it","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3e3da83bd89ae414b8fce586f4198c7cd97200a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"* QEMU (-KVM): 2.1"},{"line_number":47,"context_line":"* VMWare: 5.5"},{"line_number":48,"context_line":"* XenServer: 6.2.0"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"As it can be observed from the Support Matrix above, live resize is supported"},{"line_number":51,"context_line":"by all the hypervisors and this feature can be introduced in their respective"},{"line_number":52,"context_line":"virt Driver."}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_a654bb22","line":49,"updated":"2017-10-03 22:35:32.000000000","message":"PowerVM: forever","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"20a365f663d82ee4b7453eb8f70852fa6540a86e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"* QEMU (-KVM): 2.1"},{"line_number":47,"context_line":"* VMWare: 5.5"},{"line_number":48,"context_line":"* XenServer: 6.2.0"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"As it can be observed from the Support Matrix above, live resize is supported"},{"line_number":51,"context_line":"by all the hypervisors and this feature can be introduced in their respective"},{"line_number":52,"context_line":"virt Driver."}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f4b6375_c5ba8d6c","line":49,"in_reply_to":"3f4b6375_afd7c7bf","updated":"2017-10-24 08:45:06.000000000","message":"ok, list Power4 in next patch","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1bda2a4a7e89deec7fd021aa175fe7ad032e916e","unresolved":false,"context_lines":[{"line_number":46,"context_line":"* QEMU (-KVM): 2.1"},{"line_number":47,"context_line":"* VMWare: 5.5"},{"line_number":48,"context_line":"* XenServer: 6.2.0"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"As it can be observed from the Support Matrix above, live resize is supported"},{"line_number":51,"context_line":"by all the hypervisors and this feature can be introduced in their respective"},{"line_number":52,"context_line":"virt Driver."}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f4b6375_afd7c7bf","line":49,"in_reply_to":"5f4e5783_3f833707","updated":"2017-10-19 20:57:24.000000000","message":"Power has supported this since at least Power4. Support predates our current hypervisor (PHYP).","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"98c4a75a9298f31f74cced8c7c602d3f3d0ef304","unresolved":false,"context_lines":[{"line_number":46,"context_line":"* QEMU (-KVM): 2.1"},{"line_number":47,"context_line":"* VMWare: 5.5"},{"line_number":48,"context_line":"* XenServer: 6.2.0"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"As it can be observed from the Support Matrix above, live resize is supported"},{"line_number":51,"context_line":"by all the hypervisors and this feature can be introduced in their respective"},{"line_number":52,"context_line":"virt Driver."}],"source_content_type":"text/x-rst","patch_set":25,"id":"5f4e5783_3f833707","line":49,"in_reply_to":"7f515b1d_a654bb22","updated":"2017-10-10 06:05:28.000000000","message":"Can you specify a minimum PowerVM version?","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1bda2a4a7e89deec7fd021aa175fe7ad032e916e","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Resizing is meant to scale instances vertically. Using the \"pets vs cattle\""},{"line_number":55,"context_line":"metaphor, this feature is not meant for cattle, which can and should scale"},{"line_number":56,"context_line":"horizontally, it is meant for pets, which are typically unique and can only"},{"line_number":57,"context_line":"scale up. Live-resize is useful when stopping an instance is undesirable and"},{"line_number":58,"context_line":"the instances must have ~100% uptime."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f4b6375_af8587af","line":57,"range":{"start_line":56,"start_character":67,"end_line":57,"end_character":8},"updated":"2017-10-19 20:57:24.000000000","message":"powervm can live-resize smaller, including CPU","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"20a365f663d82ee4b7453eb8f70852fa6540a86e","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Resizing is meant to scale instances vertically. Using the \"pets vs cattle\""},{"line_number":55,"context_line":"metaphor, this feature is not meant for cattle, which can and should scale"},{"line_number":56,"context_line":"horizontally, it is meant for pets, which are typically unique and can only"},{"line_number":57,"context_line":"scale up. Live-resize is useful when stopping an instance is undesirable and"},{"line_number":58,"context_line":"the instances must have ~100% uptime."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f4b6375_65a99922","line":57,"range":{"start_line":56,"start_character":67,"end_line":57,"end_character":8},"in_reply_to":"3f4b6375_af8587af","updated":"2017-10-24 08:45:06.000000000","message":"ok, will do","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1bda2a4a7e89deec7fd021aa175fe7ad032e916e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"Proposed change"},{"line_number":62,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"This spec addresses live resize to a bigger spec (upsize). Live downsizing will"},{"line_number":65,"context_line":"be proposed and implemented later."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"This blueprint will be implemented into 2 phases."},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f4b6375_8f808b8d","line":65,"range":{"start_line":64,"start_character":0,"end_line":65,"end_character":34},"updated":"2017-10-19 20:57:24.000000000","message":"Of course you can come along and implement downsizing later for hypervisors that don\u0027t yet support it, but for those that do... why not allow both from the start?","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"20a365f663d82ee4b7453eb8f70852fa6540a86e","unresolved":false,"context_lines":[{"line_number":61,"context_line":"Proposed change"},{"line_number":62,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"This spec addresses live resize to a bigger spec (upsize). Live downsizing will"},{"line_number":65,"context_line":"be proposed and implemented later."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"This blueprint will be implemented into 2 phases."},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f4b6375_e60b5021","line":65,"range":{"start_line":64,"start_character":0,"end_line":65,"end_character":34},"in_reply_to":"3f4b6375_8f808b8d","updated":"2017-10-24 08:45:06.000000000","message":"it will be hard to define the scope ..so I propose to only allow part then consider other exceptions (such as powervm) later","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1bda2a4a7e89deec7fd021aa175fe7ad032e916e","unresolved":false,"context_lines":[{"line_number":87,"context_line":"live resize capability will be reported by the compute nodes. If it is not"},{"line_number":88,"context_line":"present in reported host capabilities, the feature is not supported [5]."},{"line_number":89,"context_line":"Secondly, the users will have to check if the live resize nova API is enabled"},{"line_number":90,"context_line":"or if they have the permission to use it. They will be able to do so through"},{"line_number":91,"context_line":"the nova API discoverable policy [6]."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"**b. If multiple resources are being live resized, what happens if some"},{"line_number":94,"context_line":"resources are already resized?** The instance will have to rollback to the"}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f4b6375_c1409738","line":91,"range":{"start_line":90,"start_character":42,"end_line":91,"end_character":37},"updated":"2017-10-19 20:57:24.000000000","message":"None of the code for this has merged yet, right? Are you reviving that?","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"20a365f663d82ee4b7453eb8f70852fa6540a86e","unresolved":false,"context_lines":[{"line_number":87,"context_line":"live resize capability will be reported by the compute nodes. If it is not"},{"line_number":88,"context_line":"present in reported host capabilities, the feature is not supported [5]."},{"line_number":89,"context_line":"Secondly, the users will have to check if the live resize nova API is enabled"},{"line_number":90,"context_line":"or if they have the permission to use it. They will be able to do so through"},{"line_number":91,"context_line":"the nova API discoverable policy [6]."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"**b. If multiple resources are being live resized, what happens if some"},{"line_number":94,"context_line":"resources are already resized?** The instance will have to rollback to the"}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f4b6375_66176047","line":91,"range":{"start_line":90,"start_character":42,"end_line":91,"end_character":37},"in_reply_to":"3f4b6375_c1409738","updated":"2017-10-24 08:45:06.000000000","message":"this should be removed, thanks for pointing out","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3e3da83bd89ae414b8fce586f4198c7cd97200a","unresolved":false,"context_lines":[{"line_number":104,"context_line":"as a snapshot. After the live resize succeeded, the VM will be unpaused and"},{"line_number":105,"context_line":"the saved state removed. Due to this, the VM activity will be disrupted for"},{"line_number":106,"context_line":"just a few seconds. If the live resize fails, the instance can be safely be"},{"line_number":107,"context_line":"rolledback to the saved state and unpaused."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"In order to perform live resize, the following criterias must be met:"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_a1182584","line":107,"updated":"2017-10-03 22:35:32.000000000","message":"I don\u0027t like either of these options.\n\nFor some hypervisors, the resize is atomic, at least for some combinations of resources, so #1 is overly restrictive.  It\u0027s also impractical from a UX point of view.  What, do I have to have multiple flavors, one for each \"step\" in the resize?\n\n#2 would exclude hypervisors that don\u0027t support pause, and would also eliminate the stated benefit of ~100% uptime (though not as badly as having to shut the thing down).\n\nThe third option - try the resize, and whatever sticks, sticks, which may mean your eventual instance state doesn\u0027t match what the flavor says - isn\u0027t ideal, but IMO it\u0027s better than the others.\n\nOr a fourth option, put the sucker into some kind of error state.","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3e3da83bd89ae414b8fce586f4198c7cd97200a","unresolved":false,"context_lines":[{"line_number":106,"context_line":"just a few seconds. If the live resize fails, the instance can be safely be"},{"line_number":107,"context_line":"rolledback to the saved state and unpaused."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"In order to perform live resize, the following criterias must be met:"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":112,"context_line":"  contain a list of resizable resources. This is required, as not all guests"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_5c071a1a","line":109,"range":{"start_line":109,"start_character":47,"end_line":109,"end_character":56},"updated":"2017-10-03 22:35:32.000000000","message":"criteria","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3e3da83bd89ae414b8fce586f4198c7cd97200a","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"In order to perform live resize, the following criterias must be met:"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":112,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":113,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":114,"context_line":"  memory resize)."}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_9c26b2ba","line":111,"range":{"start_line":111,"start_character":6,"end_line":111,"end_character":11},"updated":"2017-10-03 22:35:32.000000000","message":"The image?  Okay, where?  image_metadata?","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1bda2a4a7e89deec7fd021aa175fe7ad032e916e","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"In order to perform live resize, the following criterias must be met:"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":112,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":113,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":114,"context_line":"  memory resize)."}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f4b6375_01dd8f41","line":111,"range":{"start_line":111,"start_character":45,"end_line":111,"end_character":59},"updated":"2017-10-19 20:57:24.000000000","message":"This shifts a significant burden to the operator. They should only have to indicate what type of guest it is, something they will clearly know, and then we should have code that determines what can and can\u0027t be resized for that guest and hypervisor combination, which the operator is much less likely to know.","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"98c4a75a9298f31f74cced8c7c602d3f3d0ef304","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"In order to perform live resize, the following criterias must be met:"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":112,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":113,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":114,"context_line":"  memory resize)."}],"source_content_type":"text/x-rst","patch_set":25,"id":"5f4e5783_9f734b4e","line":111,"range":{"start_line":111,"start_character":6,"end_line":111,"end_character":11},"in_reply_to":"7f515b1d_9c26b2ba","updated":"2017-10-10 06:05:28.000000000","message":"yep.","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3e3da83bd89ae414b8fce586f4198c7cd97200a","unresolved":false,"context_lines":[{"line_number":113,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":114,"context_line":"  memory resize)."},{"line_number":115,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":116,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":117,"context_line":"  created with boot from volume."},{"line_number":118,"context_line":"* The given flavor must have a larger or equal memory or amount of vCPUs, as"},{"line_number":119,"context_line":"  live downsizing is not supported by all hypervisors."}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_dc330af6","line":116,"range":{"start_line":116,"start_character":6,"end_line":116,"end_character":11},"updated":"2017-10-03 22:35:32.000000000","message":"target (throughout)","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1bda2a4a7e89deec7fd021aa175fe7ad032e916e","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":116,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":117,"context_line":"  created with boot from volume."},{"line_number":118,"context_line":"* The given flavor must have a larger or equal memory or amount of vCPUs, as"},{"line_number":119,"context_line":"  live downsizing is not supported by all hypervisors."},{"line_number":120,"context_line":"* The given flavor must not have any different extra specs."},{"line_number":121,"context_line":"* The instance must have been created or cold resized with a flavor containing"},{"line_number":122,"context_line":"  the following extra specs: ``os:max_memory``, ``os:max_vcpus``,"}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f4b6375_41bca7db","line":119,"range":{"start_line":118,"start_character":73,"end_line":119,"end_character":54},"updated":"2017-10-19 20:57:24.000000000","message":"why restrict all because some don\u0027t support it? Should leave this restriction up to the driver.","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1bda2a4a7e89deec7fd021aa175fe7ad032e916e","unresolved":false,"context_lines":[{"line_number":117,"context_line":"  created with boot from volume."},{"line_number":118,"context_line":"* The given flavor must have a larger or equal memory or amount of vCPUs, as"},{"line_number":119,"context_line":"  live downsizing is not supported by all hypervisors."},{"line_number":120,"context_line":"* The given flavor must not have any different extra specs."},{"line_number":121,"context_line":"* The instance must have been created or cold resized with a flavor containing"},{"line_number":122,"context_line":"  the following extra specs: ``os:max_memory``, ``os:max_vcpus``,"},{"line_number":123,"context_line":"  ``os:max_disk``. These specs will set the upper limits for live resize."}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f4b6375_61c6836a","line":120,"updated":"2017-10-19 20:57:24.000000000","message":"this is overly restrictive. Leave that up to the driver.","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3e3da83bd89ae414b8fce586f4198c7cd97200a","unresolved":false,"context_lines":[{"line_number":123,"context_line":"  ``os:max_disk``. These specs will set the upper limits for live resize."},{"line_number":124,"context_line":"  Without having an upper limit for a resource type, live resize will not be"},{"line_number":125,"context_line":"  allowed for that resource type. The new flavor must not have greater values"},{"line_number":126,"context_line":"  than the limits set by these flavor extra specs."},{"line_number":127,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":128,"context_line":"  enabled in image metadata."},{"line_number":129,"context_line":"* The hypervisor must be capable of this feature and it must report it as a"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_7c79b691","line":126,"updated":"2017-10-03 22:35:32.000000000","message":"I can see why this is an option, but why is it a requirement?","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1bda2a4a7e89deec7fd021aa175fe7ad032e916e","unresolved":false,"context_lines":[{"line_number":123,"context_line":"  ``os:max_disk``. These specs will set the upper limits for live resize."},{"line_number":124,"context_line":"  Without having an upper limit for a resource type, live resize will not be"},{"line_number":125,"context_line":"  allowed for that resource type. The new flavor must not have greater values"},{"line_number":126,"context_line":"  than the limits set by these flavor extra specs."},{"line_number":127,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":128,"context_line":"  enabled in image metadata."},{"line_number":129,"context_line":"* The hypervisor must be capable of this feature and it must report it as a"}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f4b6375_81da9f14","line":126,"in_reply_to":"7f515b1d_7c79b691","updated":"2017-10-19 20:57:24.000000000","message":"I don\u0027t know if that will always be true, but powervm can only live-resize within limits that are defined at boot, and I assume the author has found that to be true for the other hypervisors being considered?","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3e3da83bd89ae414b8fce586f4198c7cd97200a","unresolved":false,"context_lines":[{"line_number":128,"context_line":"  enabled in image metadata."},{"line_number":129,"context_line":"* The hypervisor must be capable of this feature and it must report it as a"},{"line_number":130,"context_line":"  capability. If the hypervisor does not report this capability, the action"},{"line_number":131,"context_line":"  will raise an exception."},{"line_number":132,"context_line":"* In order for the nova live-resize API call to be accepted, it must be enabled"},{"line_number":133,"context_line":"  in the ``/etc/nova/policy.json`` file (disabled by default)."},{"line_number":134,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_9c9912d2","line":131,"updated":"2017-10-03 22:35:32.000000000","message":"Assume this is in the virt driver\u0027s `capabilities` dict.","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1bda2a4a7e89deec7fd021aa175fe7ad032e916e","unresolved":false,"context_lines":[{"line_number":151,"context_line":"  * A new method must be implemented, called ``live_resize``, which will be"},{"line_number":152,"context_line":"    called through RPC by the conductor, as this feature has a significantly"},{"line_number":153,"context_line":"    different behaviour than the cold migration."},{"line_number":154,"context_line":"  * Live-resize will be supported only on the same host in Phase I. Thus, it"},{"line_number":155,"context_line":"    must raise an exception if the host is different."},{"line_number":156,"context_line":"  * It will check whether the hypervisor is able to perform this feature by"},{"line_number":157,"context_line":"    checking its capabilities."},{"line_number":158,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f4b6375_41bee765","line":155,"range":{"start_line":154,"start_character":68,"end_line":155,"end_character":53},"updated":"2017-10-19 20:57:24.000000000","message":"how will you make sure the host isn\u0027t different? Users shouldn\u0027t see this fail randomly because we picked a different host.","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3e3da83bd89ae414b8fce586f4198c7cd97200a","unresolved":false,"context_lines":[{"line_number":161,"context_line":"  drivers, making sure the instance is not stopped or restarted."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"libvirt implementation:"},{"line_number":164,"context_line":"  First cylce of this spec will focus on memory and cpu live resize, for"},{"line_number":165,"context_line":"  libvirt it will be something like:"},{"line_number":166,"context_line":"  http://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSetVcpus"},{"line_number":167,"context_line":"  http://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSetMemory"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_3cf69efb","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":13},"updated":"2017-10-03 22:35:32.000000000","message":"cycle","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3e3da83bd89ae414b8fce586f4198c7cd97200a","unresolved":false,"context_lines":[{"line_number":176,"context_line":"-----------------"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"The ``os_live_resize`` field will be added to the ``ImageMetaProps`` and"},{"line_number":179,"context_line":"``HostCapabilities`` objects."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"REST API impact"},{"line_number":182,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_9cd0f255","line":179,"updated":"2017-10-03 22:35:32.000000000","message":"Okay, this answers question above.","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1bda2a4a7e89deec7fd021aa175fe7ad032e916e","unresolved":false,"context_lines":[{"line_number":227,"context_line":"Other deployer impact"},{"line_number":228,"context_line":"---------------------"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"To use this feature, the users will have to enable the live-resize API in the"},{"line_number":231,"context_line":"``policy.json`` file by updating the ``os_compute_api:servers:live_resize``"},{"line_number":232,"context_line":"field."},{"line_number":233,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f4b6375_6156832c","line":230,"updated":"2017-10-19 20:57:24.000000000","message":"this isn\u0027t how policy works. We set a reasonable default that will work for most folks that DO want to use the feature. We do not block things by default via policy.\n\nAnd no, this is not what mriedem suggested in the ML post. He said folks should be able to control it via policy, not that it should be disabled by default...","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1bda2a4a7e89deec7fd021aa175fe7ad032e916e","unresolved":false,"context_lines":[{"line_number":278,"context_line":"the discoverable API endpoints blueprint [7], so users can determine"},{"line_number":279,"context_line":"whether the live-resize action is available."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"After several cycles, per discussion in this mail thread"},{"line_number":282,"context_line":"http://lists.openstack.org/pipermail/openstack-dev/2017-September/122318.html"},{"line_number":283,"context_line":"we are not depending on capability anymore so free to go now."},{"line_number":284,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f4b6375_c412e558","line":281,"updated":"2017-10-19 20:57:24.000000000","message":"ah, then you need to reword above where you said this would depend on [6]","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"66582139f63772ff819b1af18b48a590604454f4","unresolved":false,"context_lines":[{"line_number":329,"context_line":"  [2c] Memory hotplug introduced in QEMU 2.1"},{"line_number":330,"context_line":"    http://wiki.qemu.org/ChangeLog/2.1"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"  [2d] qemu-kvm CPU hotplug"},{"line_number":333,"context_line":"    http://www.linux-kvm.org/page/CPUHotPlug"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"  [2e] PCI hotplug support"},{"line_number":336,"context_line":"    http://www.linux-kvm.org/page/Hotadd_pci_devices"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_0f860ddd","line":333,"range":{"start_line":332,"start_character":0,"end_line":333,"end_character":44},"updated":"2017-10-03 15:28:47.000000000","message":"If you follow this link you\u0027ll see the feature isn\u0027t functional.  I think you should be looking at https://wiki.qemu.org/Features/CPUHotplug but even there there are many caveats.","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"54ed46e1ef87f77dedee069ae6770f7c2d10e835","unresolved":false,"context_lines":[{"line_number":329,"context_line":"  [2c] Memory hotplug introduced in QEMU 2.1"},{"line_number":330,"context_line":"    http://wiki.qemu.org/ChangeLog/2.1"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"  [2d] qemu-kvm CPU hotplug"},{"line_number":333,"context_line":"    http://www.linux-kvm.org/page/CPUHotPlug"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"  [2e] PCI hotplug support"},{"line_number":336,"context_line":"    http://www.linux-kvm.org/page/Hotadd_pci_devices"}],"source_content_type":"text/x-rst","patch_set":25,"id":"5f4e5783_d91d6310","line":333,"range":{"start_line":332,"start_character":0,"end_line":333,"end_character":44},"in_reply_to":"7f515b1d_0f860ddd","updated":"2017-10-10 04:15:57.000000000","message":"ok.... this might need more PoC :(","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"1bda2a4a7e89deec7fd021aa175fe7ad032e916e","unresolved":false,"context_lines":[{"line_number":368,"context_line":"  https://etherpad.openstack.org/p/nova-newton-midcycle"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"[6] Expose host capabilities spec"},{"line_number":371,"context_line":"  https://review.openstack.org/#/c/222200/"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"[7] Nova API discoverable policy"},{"line_number":374,"context_line":"  https://review.openstack.org/#/c/363584/"}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f4b6375_212d2b95","line":371,"updated":"2017-10-19 20:57:24.000000000","message":"https://blueprints.launchpad.net/nova/+spec/expose-host-capabilities would probably be a better link for this.","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b0e886b10a3675793e00c129840b16a13a56817a","unresolved":false,"context_lines":[{"line_number":368,"context_line":"  https://etherpad.openstack.org/p/nova-newton-midcycle"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"[6] Expose host capabilities spec"},{"line_number":371,"context_line":"  https://review.openstack.org/#/c/222200/"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"[7] Nova API discoverable policy"},{"line_number":374,"context_line":"  https://review.openstack.org/#/c/363584/"}],"source_content_type":"text/x-rst","patch_set":25,"id":"3f4b6375_43340ede","line":371,"in_reply_to":"3f4b6375_212d2b95","updated":"2017-10-26 09:17:35.000000000","message":"Done","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b3e3da83bd89ae414b8fce586f4198c7cd97200a","unresolved":false,"context_lines":[{"line_number":382,"context_line":""},{"line_number":383,"context_line":"   * - Release Name"},{"line_number":384,"context_line":"     - Description"},{"line_number":385,"context_line":"   * - Queens"},{"line_number":386,"context_line":"     - Introduced"}],"source_content_type":"text/x-rst","patch_set":25,"id":"7f515b1d_9c5eb2e7","line":385,"range":{"start_line":385,"start_character":7,"end_line":385,"end_character":13},"updated":"2017-10-03 22:35:32.000000000","message":"really?","commit_id":"766f4593028d42e836c8909bef0db9b5a234eb72"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"74e19bc430759019560165bd0f95f995a788a58c","unresolved":false,"context_lines":[{"line_number":63,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"This spec addresses live resize to both upsize and downsize, it\u0027s up to the"},{"line_number":66,"context_line":"hypervisor itself to support both upsize and downsize or upsize only ("},{"line_number":67,"context_line":"considering upsize is mostly used and supported)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"This blueprint will be implemented into 2 phases."}],"source_content_type":"text/x-rst","patch_set":27,"id":"3f4b6375_4b442447","line":66,"updated":"2017-10-26 11:01:27.000000000","message":"newline before the paren here","commit_id":"76c23a47c5dd8a6cfb9457338c7aa7696c0eb74f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"e0a069fe354c8280cf88cd5fdba2ce6036c2ca17","unresolved":false,"context_lines":[{"line_number":63,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"This spec addresses live resize to both upsize and downsize, it\u0027s up to the"},{"line_number":66,"context_line":"hypervisor itself to support both upsize and downsize or upsize only ("},{"line_number":67,"context_line":"considering upsize is mostly used and supported)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"This blueprint will be implemented into 2 phases."}],"source_content_type":"text/x-rst","patch_set":27,"id":"1f9dbf25_ea8e202d","line":66,"in_reply_to":"3f4b6375_4b442447","updated":"2018-03-01 09:19:04.000000000","message":"Done","commit_id":"76c23a47c5dd8a6cfb9457338c7aa7696c0eb74f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"74e19bc430759019560165bd0f95f995a788a58c","unresolved":false,"context_lines":[{"line_number":85,"context_line":"There are a couple of concerns raised regarding the implementation of this"},{"line_number":86,"context_line":"feature."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"**a. How can users know if they can use this feature?** "},{"line_number":89,"context_line":"The users will have to check if the live resize nova API is enabled"},{"line_number":90,"context_line":"or if they have the permission to use it through to be added ``live-resize``"},{"line_number":91,"context_line":"policy."}],"source_content_type":"text/x-rst","patch_set":27,"id":"3f4b6375_2b79e892","line":88,"updated":"2017-10-26 11:01:27.000000000","message":"trailing whitespace","commit_id":"76c23a47c5dd8a6cfb9457338c7aa7696c0eb74f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"e0a069fe354c8280cf88cd5fdba2ce6036c2ca17","unresolved":false,"context_lines":[{"line_number":85,"context_line":"There are a couple of concerns raised regarding the implementation of this"},{"line_number":86,"context_line":"feature."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"**a. How can users know if they can use this feature?** "},{"line_number":89,"context_line":"The users will have to check if the live resize nova API is enabled"},{"line_number":90,"context_line":"or if they have the permission to use it through to be added ``live-resize``"},{"line_number":91,"context_line":"policy."}],"source_content_type":"text/x-rst","patch_set":27,"id":"1f9dbf25_eabce0bc","line":88,"in_reply_to":"3f4b6375_2b79e892","updated":"2018-03-01 09:19:04.000000000","message":"Done","commit_id":"76c23a47c5dd8a6cfb9457338c7aa7696c0eb74f"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"dbc285b5e1ac535b4607ce714223e7335b21d713","unresolved":false,"context_lines":[{"line_number":94,"context_line":"resources are already resized?** The instance will have to rollback to the"},{"line_number":95,"context_line":"previous flavor. Performing a rollback through live-downsize is not supported"},{"line_number":96,"context_line":"by all hypervisors and guests and it can fail. In order to address this"},{"line_number":97,"context_line":"concern, there are two solutions:"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"1. Only allow live resize on one resource at a time. If live resize fails, the"},{"line_number":100,"context_line":"resource will maintain its old value."}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa0c359_45e960b5","line":97,"range":{"start_line":97,"start_character":9,"end_line":97,"end_character":33},"updated":"2018-02-27 10:12:50.000000000","message":"how do we pick one of these?","commit_id":"76c23a47c5dd8a6cfb9457338c7aa7696c0eb74f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"e0a069fe354c8280cf88cd5fdba2ce6036c2ca17","unresolved":false,"context_lines":[{"line_number":94,"context_line":"resources are already resized?** The instance will have to rollback to the"},{"line_number":95,"context_line":"previous flavor. Performing a rollback through live-downsize is not supported"},{"line_number":96,"context_line":"by all hypervisors and guests and it can fail. In order to address this"},{"line_number":97,"context_line":"concern, there are two solutions:"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"1. Only allow live resize on one resource at a time. If live resize fails, the"},{"line_number":100,"context_line":"resource will maintain its old value."}],"source_content_type":"text/x-rst","patch_set":27,"id":"1f9dbf25_6a69b023","line":97,"range":{"start_line":97,"start_character":9,"end_line":97,"end_character":33},"in_reply_to":"3fa0c359_45e960b5","updated":"2018-03-01 09:19:04.000000000","message":"From an implementation stand-point, 1. would be the easiest: if it fails while resizing a single resource, we can easily rollback the instance to its previous state (since nothing really changed). If we resize multiple resources (let\u0027s say all 3: vcpus, memory, disk) and it failed while resizing the last one of them, the instance would end up in an inconsistent state, and we\u0027ll have to put the instance in ERROR state, which most probably will have to be handled manually.\n\n1. is a bit annoying for a user\u0027s POV, but much safer, IMO.","commit_id":"76c23a47c5dd8a6cfb9457338c7aa7696c0eb74f"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"dbc285b5e1ac535b4607ce714223e7335b21d713","unresolved":false,"context_lines":[{"line_number":102,"context_line":"2. Save the VM state before live resize. This means that the VM will be paused"},{"line_number":103,"context_line":"(in order to prevent data loss during rollback) and its state will be saved"},{"line_number":104,"context_line":"as a snapshot. After the live resize succeeded, the VM will be unpaused and"},{"line_number":105,"context_line":"the saved state removed. Due to this, the VM activity will be disrupted for"},{"line_number":106,"context_line":"just a few seconds. If the live resize fails, the instance can be safely be"},{"line_number":107,"context_line":"rolledback to the saved state and unpaused."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"In order to perform live resize, the following criteria must be met:"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa0c359_65da5c1e","line":106,"range":{"start_line":105,"start_character":25,"end_line":106,"end_character":19},"updated":"2018-02-27 10:12:50.000000000","message":"Is it possible to hot-resize resources on a paused VM for all hypervisors?","commit_id":"76c23a47c5dd8a6cfb9457338c7aa7696c0eb74f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"e0a069fe354c8280cf88cd5fdba2ce6036c2ca17","unresolved":false,"context_lines":[{"line_number":102,"context_line":"2. Save the VM state before live resize. This means that the VM will be paused"},{"line_number":103,"context_line":"(in order to prevent data loss during rollback) and its state will be saved"},{"line_number":104,"context_line":"as a snapshot. After the live resize succeeded, the VM will be unpaused and"},{"line_number":105,"context_line":"the saved state removed. Due to this, the VM activity will be disrupted for"},{"line_number":106,"context_line":"just a few seconds. If the live resize fails, the instance can be safely be"},{"line_number":107,"context_line":"rolledback to the saved state and unpaused."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"In order to perform live resize, the following criteria must be met:"}],"source_content_type":"text/x-rst","patch_set":27,"id":"1f9dbf25_eae140d2","line":106,"range":{"start_line":105,"start_character":25,"end_line":106,"end_character":19},"in_reply_to":"3fa0c359_65da5c1e","updated":"2018-03-01 09:19:04.000000000","message":"Will have to look into it.","commit_id":"76c23a47c5dd8a6cfb9457338c7aa7696c0eb74f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"74e19bc430759019560165bd0f95f995a788a58c","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":116,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":117,"context_line":"  created with boot from volume."},{"line_number":118,"context_line":"* Live downsize or upsize might have a larger/equal/smaller memory or amount of vCPUs,"},{"line_number":119,"context_line":"  up to hypervisor to decide whether it\u0027s supported or not, if it\u0027s not supported"},{"line_number":120,"context_line":"  some kind of exception like \u0027LiveResizeNotAccepted\u0027 will be returned."},{"line_number":121,"context_line":"* If target flavor have any different extra specs, up to virt driver to decide"},{"line_number":122,"context_line":"  whether it\u0027s allowed or not."}],"source_content_type":"text/x-rst","patch_set":27,"id":"3f4b6375_2b9e88b8","line":119,"range":{"start_line":118,"start_character":80,"end_line":119,"end_character":81},"updated":"2017-10-26 11:01:27.000000000","message":"line width","commit_id":"76c23a47c5dd8a6cfb9457338c7aa7696c0eb74f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"e0a069fe354c8280cf88cd5fdba2ce6036c2ca17","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":116,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":117,"context_line":"  created with boot from volume."},{"line_number":118,"context_line":"* Live downsize or upsize might have a larger/equal/smaller memory or amount of vCPUs,"},{"line_number":119,"context_line":"  up to hypervisor to decide whether it\u0027s supported or not, if it\u0027s not supported"},{"line_number":120,"context_line":"  some kind of exception like \u0027LiveResizeNotAccepted\u0027 will be returned."},{"line_number":121,"context_line":"* If target flavor have any different extra specs, up to virt driver to decide"},{"line_number":122,"context_line":"  whether it\u0027s allowed or not."}],"source_content_type":"text/x-rst","patch_set":27,"id":"1f9dbf25_0a76ec07","line":119,"range":{"start_line":118,"start_character":80,"end_line":119,"end_character":81},"in_reply_to":"3f4b6375_2b9e88b8","updated":"2018-03-01 09:19:04.000000000","message":"Done","commit_id":"76c23a47c5dd8a6cfb9457338c7aa7696c0eb74f"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"36e00fec4a476bfb08fed82d4d2917fe49366063","unresolved":false,"context_lines":[{"line_number":120,"context_line":"  some kind of exception like \u0027LiveResizeNotAccepted\u0027 will be returned."},{"line_number":121,"context_line":"* If target flavor have any different extra specs, up to virt driver to decide"},{"line_number":122,"context_line":"  whether it\u0027s allowed or not."},{"line_number":123,"context_line":"* The instance must have been created or cold resized with a flavor containing"},{"line_number":124,"context_line":"  the following extra specs: ``os:max_memory``, ``os:max_vcpus``,"},{"line_number":125,"context_line":"  ``os:max_disk``. These specs will set the upper limits for live resize."},{"line_number":126,"context_line":"  Without having an upper limit for a resource type, live resize will not be"},{"line_number":127,"context_line":"  allowed for that resource type. The new flavor must not have greater values"},{"line_number":128,"context_line":"  than the limits set by these flavor extra specs."},{"line_number":129,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":130,"context_line":"  enabled in image metadata."},{"line_number":131,"context_line":"* In order for the nova live-resize API call to be accepted, it can be disabled"}],"source_content_type":"text/x-rst","patch_set":27,"id":"1f9dbf25_1baadb84","line":128,"range":{"start_line":123,"start_character":2,"end_line":128,"end_character":50},"updated":"2018-02-27 10:42:21.000000000","message":"As mentioned earlier by Daniel Berrange, this is not sufficient.  If you have a multi-numa-node guest you need to specify CPU/RAM max values per numa node.  (And you might need to ensure that the new flavor has the same number of NUMA nodes as the old.)  Similarly, if you use hugepages then you need to ensure that the size in the new flavor is a multiple of the original pagesize.  Finally, for dedicated CPUs we\u0027d need to ensure that the new flavor also uses dedicated CPUs.","commit_id":"76c23a47c5dd8a6cfb9457338c7aa7696c0eb74f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"e0a069fe354c8280cf88cd5fdba2ce6036c2ca17","unresolved":false,"context_lines":[{"line_number":120,"context_line":"  some kind of exception like \u0027LiveResizeNotAccepted\u0027 will be returned."},{"line_number":121,"context_line":"* If target flavor have any different extra specs, up to virt driver to decide"},{"line_number":122,"context_line":"  whether it\u0027s allowed or not."},{"line_number":123,"context_line":"* The instance must have been created or cold resized with a flavor containing"},{"line_number":124,"context_line":"  the following extra specs: ``os:max_memory``, ``os:max_vcpus``,"},{"line_number":125,"context_line":"  ``os:max_disk``. These specs will set the upper limits for live resize."},{"line_number":126,"context_line":"  Without having an upper limit for a resource type, live resize will not be"},{"line_number":127,"context_line":"  allowed for that resource type. The new flavor must not have greater values"},{"line_number":128,"context_line":"  than the limits set by these flavor extra specs."},{"line_number":129,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":130,"context_line":"  enabled in image metadata."},{"line_number":131,"context_line":"* In order for the nova live-resize API call to be accepted, it can be disabled"}],"source_content_type":"text/x-rst","patch_set":27,"id":"1f9dbf25_0afd8c39","line":128,"range":{"start_line":123,"start_character":2,"end_line":128,"end_character":50},"in_reply_to":"1f9dbf25_1baadb84","updated":"2018-03-01 09:19:04.000000000","message":"good point.","commit_id":"76c23a47c5dd8a6cfb9457338c7aa7696c0eb74f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"74e19bc430759019560165bd0f95f995a788a58c","unresolved":false,"context_lines":[{"line_number":378,"context_line":".. list-table:: Revisions"},{"line_number":379,"context_line":"   :header-rows: 1"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"   * - Release Name"},{"line_number":382,"context_line":"     - Description"},{"line_number":383,"context_line":"     - Introduced"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3f4b6375_cb0a541e","line":381,"updated":"2017-10-26 11:01:27.000000000","message":"Need to put some data in this table (Queens, Introduced) for the build to succeed.","commit_id":"76c23a47c5dd8a6cfb9457338c7aa7696c0eb74f"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"e0a069fe354c8280cf88cd5fdba2ce6036c2ca17","unresolved":false,"context_lines":[{"line_number":378,"context_line":".. list-table:: Revisions"},{"line_number":379,"context_line":"   :header-rows: 1"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"   * - Release Name"},{"line_number":382,"context_line":"     - Description"},{"line_number":383,"context_line":"     - Introduced"}],"source_content_type":"text/x-rst","patch_set":27,"id":"1f9dbf25_aaa3384f","line":381,"in_reply_to":"3f4b6375_cb0a541e","updated":"2018-03-01 09:19:04.000000000","message":"hm, since we\u0027re proposing this to Rocky, will add Rocky instead.","commit_id":"76c23a47c5dd8a6cfb9457338c7aa7696c0eb74f"}],"specs/rocky/approved/instance-live-resize.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":29,"context_line":"The Support Matrix for online resize is as follows:"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":32,"context_line":"|                   |      Disk      |   Memory   | VCPUs  |  PCIs  |"},{"line_number":33,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":34,"context_line":"| **Hyper-V**       | ✓ [1a][1b][1c] | ✓ [1c][1d] | X      | ✓ [1e] |"},{"line_number":35,"context_line":"+-------------------+----------------+------------+--------+--------+"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_e6481e88","line":32,"range":{"start_line":32,"start_character":62,"end_line":32,"end_character":66},"updated":"2018-03-13 14:44:23.000000000","message":"Does resize work with PCI today? I think Moshe Levi and mellanox/windriver people got this working a few releases ago but I\u0027m not sure it\u0027s actually tested anymore.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"28a5964f13229d20ab6099ef66afab89e774499f","unresolved":false,"context_lines":[{"line_number":29,"context_line":"The Support Matrix for online resize is as follows:"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":32,"context_line":"|                   |      Disk      |   Memory   | VCPUs  |  PCIs  |"},{"line_number":33,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":34,"context_line":"| **Hyper-V**       | ✓ [1a][1b][1c] | ✓ [1c][1d] | X      | ✓ [1e] |"},{"line_number":35,"context_line":"+-------------------+----------------+------------+--------+--------+"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_796a55ed","line":32,"range":{"start_line":32,"start_character":62,"end_line":32,"end_character":66},"in_reply_to":"df7087c5_e6481e88","updated":"2018-03-14 19:53:04.000000000","message":"I\u0027ve tried cold resize with PCI a few cycles ago, when we\u0027ve added the feature to the HyperVDriver. It was working, with the exception of one particular usecase: If a host had 2 PCI devices (same vendor_id, product_id), and both were attached to an instance, resizing to a flavor requiring only one would fail with an exception raised by the scheduler or resource tracker (don\u0027t remember which). I\u0027ve raised this issue in the #openstack-nova channel, but apparenly it wasn\u0027t a new discovery. Don\u0027t know if anyone fixed it though.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":31,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":32,"context_line":"|                   |      Disk      |   Memory   | VCPUs  |  PCIs  |"},{"line_number":33,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":34,"context_line":"| **Hyper-V**       | ✓ [1a][1b][1c] | ✓ [1c][1d] | X      | ✓ [1e] |"},{"line_number":35,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":36,"context_line":"| **KVM + Libvirt** | ✓ [1a]         | ✓ [2b][2c] | ✓ [2d] | ✓ [2e] |"},{"line_number":37,"context_line":"+-------------------+----------------+------------+--------+--------+"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_0665121e","line":34,"range":{"start_line":34,"start_character":24,"end_line":34,"end_character":36},"updated":"2018-03-13 14:44:23.000000000","message":"nit: these citations aren\u0027t linked up properly, you\u0027d need to do something like:\n\n[1a]_\n\n.. [1a] blah\n\nhttp://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#citations","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"28a5964f13229d20ab6099ef66afab89e774499f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":32,"context_line":"|                   |      Disk      |   Memory   | VCPUs  |  PCIs  |"},{"line_number":33,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":34,"context_line":"| **Hyper-V**       | ✓ [1a][1b][1c] | ✓ [1c][1d] | X      | ✓ [1e] |"},{"line_number":35,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":36,"context_line":"| **KVM + Libvirt** | ✓ [1a]         | ✓ [2b][2c] | ✓ [2d] | ✓ [2e] |"},{"line_number":37,"context_line":"+-------------------+----------------+------------+--------+--------+"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_39785dc2","line":34,"range":{"start_line":34,"start_character":24,"end_line":34,"end_character":36},"in_reply_to":"df7087c5_0665121e","updated":"2018-03-14 19:53:04.000000000","message":"Done","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"820662617026ff53adb385698e4b17151478062e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":34,"context_line":"| **Hyper-V**       | ✓ [1a][1b][1c] | ✓ [1c][1d] | X      | ✓ [1e] |"},{"line_number":35,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":36,"context_line":"| **KVM + Libvirt** | ✓ [1a]         | ✓ [2b][2c] | ✓ [2d] | ✓ [2e] |"},{"line_number":37,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":38,"context_line":"| **VMWare**        | ✓ [3a]         | ✓ [3b]     | ✓ [3c] | ✓ [3d] |"},{"line_number":39,"context_line":"+-------------------+----------------+------------+--------+--------+"}],"source_content_type":"text/x-rst","patch_set":29,"id":"1f9dbf25_4bbcdfdb","line":36,"updated":"2018-03-01 21:48:10.000000000","message":"what about qemu(tcg)+libvirt?  do we need to break that out separately or is it close enough to KVM?","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"203fba59f7cb7736c9d061b401f5d3579d708b6a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":34,"context_line":"| **Hyper-V**       | ✓ [1a][1b][1c] | ✓ [1c][1d] | X      | ✓ [1e] |"},{"line_number":35,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":36,"context_line":"| **KVM + Libvirt** | ✓ [1a]         | ✓ [2b][2c] | ✓ [2d] | ✓ [2e] |"},{"line_number":37,"context_line":"+-------------------+----------------+------------+--------+--------+"},{"line_number":38,"context_line":"| **VMWare**        | ✓ [3a]         | ✓ [3b]     | ✓ [3c] | ✓ [3d] |"},{"line_number":39,"context_line":"+-------------------+----------------+------------+--------+--------+"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_712037ad","line":36,"in_reply_to":"1f9dbf25_4bbcdfdb","updated":"2018-03-14 05:41:32.000000000","message":"from my test seems not \n\nstack@k8s:~/devstack$ sudo virsh setmem instance-00000003 --size 384M\n\nstack@k8s:~/devstack$ virsh console instance-00000003\nConnected to domain instance-00000003\nEscape character is ^]\n\nlogin as \u0027cirros\u0027 user. default password: \u0027cubswin:)\u0027. use \u0027sudo\u0027 for root.\nji1 login: cirros\nPassword:\n$ free\n             total         used         free       shared      buffers\nMem:        503340        25412       477928            0         1868\n-/+ buffers:              23544       479796\n\nthis result comes from 2nd level VM (which runs qemu instead of KVM)\njichen@k8s:~$ /usr/bin/qemu-system-x86_64 --version\nQEMU emulator version 2.10.1\n\nmaybe Qemu version issue .... at least on 1st level KVM it works fine \n\n[jichen@oc2523485342 ~]$ /usr/libexec/qemu-kvm --version\nQEMU PC emulator version 0.12.1 (qemu-kvm-0.12.1.2-2.503.el6_9.3), Copyright (c) 2003-2008 Fabrice Bellard","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"820662617026ff53adb385698e4b17151478062e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"Minimum hypervisor version required:"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* Hyper-V: Windows Hyper-V / Server 2012 R2: 6.3"},{"line_number":46,"context_line":"* QEMU (-KVM): 2.1"},{"line_number":47,"context_line":"* VMWare: 5.5"},{"line_number":48,"context_line":"* XenServer: 6.2.0"},{"line_number":49,"context_line":"* PowerVM: 4"}],"source_content_type":"text/x-rst","patch_set":29,"id":"1f9dbf25_8bc98779","line":46,"updated":"2018-03-01 21:48:10.000000000","message":"I don\u0027t think qemu/kvm gets CPU hotplug support until 2.8 or so.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"1e922ed151024e14abeda1786e1889a6da5ec499","unresolved":false,"context_lines":[{"line_number":43,"context_line":"Minimum hypervisor version required:"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* Hyper-V: Windows Hyper-V / Server 2012 R2: 6.3"},{"line_number":46,"context_line":"* QEMU (-KVM): 2.1"},{"line_number":47,"context_line":"* VMWare: 5.5"},{"line_number":48,"context_line":"* XenServer: 6.2.0"},{"line_number":49,"context_line":"* PowerVM: 4"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_0fbcb5da","line":46,"in_reply_to":"1f9dbf25_8bc98779","updated":"2018-03-08 09:47:27.000000000","message":"OK, will test and share result here","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":46,"context_line":"* QEMU (-KVM): 2.1"},{"line_number":47,"context_line":"* VMWare: 5.5"},{"line_number":48,"context_line":"* XenServer: 6.2.0"},{"line_number":49,"context_line":"* PowerVM: 4"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"As it can be observed from the Support Matrix above, live resize is supported"},{"line_number":52,"context_line":"by all the hypervisors and this feature can be introduced in their respective"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_c6115a5f","line":49,"range":{"start_line":49,"start_character":2,"end_line":49,"end_character":12},"updated":"2018-03-13 14:44:23.000000000","message":"PowerVM isn\u0027t in the table above - are you (or someone) planning on adding that support for the powervm driver? The powervm driver doesn\u0027t yet support cold resize (in tree anyway).  Maybe you\u0027re just listing it here as information that the driver would not be excluded from supporting this in the future.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"203fba59f7cb7736c9d061b401f5d3579d708b6a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"* QEMU (-KVM): 2.1"},{"line_number":47,"context_line":"* VMWare: 5.5"},{"line_number":48,"context_line":"* XenServer: 6.2.0"},{"line_number":49,"context_line":"* PowerVM: 4"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"As it can be observed from the Support Matrix above, live resize is supported"},{"line_number":52,"context_line":"by all the hypervisors and this feature can be introduced in their respective"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_d141033b","line":49,"range":{"start_line":49,"start_character":2,"end_line":49,"end_character":12},"in_reply_to":"df7087c5_c6115a5f","updated":"2018-03-14 05:41:32.000000000","message":"yes, I think we can ask Eric for more info\nI remember they told me out of tree already support it so we can track here anyway","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"28a5964f13229d20ab6099ef66afab89e774499f","unresolved":false,"context_lines":[{"line_number":46,"context_line":"* QEMU (-KVM): 2.1"},{"line_number":47,"context_line":"* VMWare: 5.5"},{"line_number":48,"context_line":"* XenServer: 6.2.0"},{"line_number":49,"context_line":"* PowerVM: 4"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"As it can be observed from the Support Matrix above, live resize is supported"},{"line_number":52,"context_line":"by all the hypervisors and this feature can be introduced in their respective"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_5c117f51","line":49,"range":{"start_line":49,"start_character":2,"end_line":49,"end_character":12},"in_reply_to":"df7087c5_d141033b","updated":"2018-03-14 19:53:04.000000000","message":"During the PTG, there was someone from PowerVM, and they mentioned that this is something they\u0027ll want to do as well. See L697: https://etherpad.openstack.org/p/nova-ptg-rocky\n\nDon\u0027t remember who it was though.\n\nAnyways, it would be nice if someone from PowerVM could provide some links for all the different types of live-resize supported, like we have for any other hypervisor.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":55,"context_line":"Resizing is meant to scale instances vertically. Using the \"pets vs cattle\""},{"line_number":56,"context_line":"metaphor, this feature is not meant for cattle, which can and should scale"},{"line_number":57,"context_line":"horizontally, it is meant for pets, which are typically unique and can only"},{"line_number":58,"context_line":"scale up (some hypervisors also support scale down such as PowerVM)."},{"line_number":59,"context_line":"Live-resize is useful when stopping an instance is undesirable and"},{"line_number":60,"context_line":"the instances must have ~100% uptime."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_d106f61c","line":58,"range":{"start_line":58,"start_character":10,"end_line":58,"end_character":66},"updated":"2018-03-13 14:44:23.000000000","message":"Should probably note somewhere in the spec that we aren\u0027t going to support resizing down.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"28a5964f13229d20ab6099ef66afab89e774499f","unresolved":false,"context_lines":[{"line_number":55,"context_line":"Resizing is meant to scale instances vertically. Using the \"pets vs cattle\""},{"line_number":56,"context_line":"metaphor, this feature is not meant for cattle, which can and should scale"},{"line_number":57,"context_line":"horizontally, it is meant for pets, which are typically unique and can only"},{"line_number":58,"context_line":"scale up (some hypervisors also support scale down such as PowerVM)."},{"line_number":59,"context_line":"Live-resize is useful when stopping an instance is undesirable and"},{"line_number":60,"context_line":"the instances must have ~100% uptime."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_f92bc591","line":58,"range":{"start_line":58,"start_character":10,"end_line":58,"end_character":66},"in_reply_to":"df7087c5_519c13bf","updated":"2018-03-14 19:53:04.000000000","message":"Indeed, my original plan was to only support upsizing. The spec was amended since then. It seems like there are some people who wants downsizing as well.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"203fba59f7cb7736c9d061b401f5d3579d708b6a","unresolved":false,"context_lines":[{"line_number":55,"context_line":"Resizing is meant to scale instances vertically. Using the \"pets vs cattle\""},{"line_number":56,"context_line":"metaphor, this feature is not meant for cattle, which can and should scale"},{"line_number":57,"context_line":"horizontally, it is meant for pets, which are typically unique and can only"},{"line_number":58,"context_line":"scale up (some hypervisors also support scale down such as PowerVM)."},{"line_number":59,"context_line":"Live-resize is useful when stopping an instance is undesirable and"},{"line_number":60,"context_line":"the instances must have ~100% uptime."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_519c13bf","line":58,"range":{"start_line":58,"start_character":10,"end_line":58,"end_character":66},"in_reply_to":"df7087c5_d106f61c","updated":"2018-03-14 05:41:32.000000000","message":"yes, listed below","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"081c47d971672c7ad9b578b3e01f9e256533fc96","unresolved":false,"context_lines":[{"line_number":55,"context_line":"Resizing is meant to scale instances vertically. Using the \"pets vs cattle\""},{"line_number":56,"context_line":"metaphor, this feature is not meant for cattle, which can and should scale"},{"line_number":57,"context_line":"horizontally, it is meant for pets, which are typically unique and can only"},{"line_number":58,"context_line":"scale up (some hypervisors also support scale down such as PowerVM)."},{"line_number":59,"context_line":"Live-resize is useful when stopping an instance is undesirable and"},{"line_number":60,"context_line":"the instances must have ~100% uptime."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_7f753af9","line":58,"range":{"start_line":58,"start_character":10,"end_line":58,"end_character":66},"in_reply_to":"df7087c5_f92bc591","updated":"2018-03-15 10:21:35.000000000","message":"I\u0027ve talked to jichen about this, and we\u0027ve agreed that we\u0027ll only add support for live-upsizing for now, and after it\u0027s done, we\u0027ll look into adding support for downsizing as well.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":62,"context_line":"Proposed change"},{"line_number":63,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"This spec addresses live resize to both upsize and downsize, it\u0027s up to the"},{"line_number":66,"context_line":"hypervisor itself to support both upsize and downsize or upsize only"},{"line_number":67,"context_line":"(considering upsize is mostly used and supported)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"This blueprint will be implemented into 2 phases."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_916b9eb5","line":67,"range":{"start_line":65,"start_character":0,"end_line":67,"end_character":49},"updated":"2018-03-13 14:44:23.000000000","message":"When live resize was discussed in the past, I thought the general agreement (at least from the Newton PTG) was that live downsize would not be supported.\n\nSee L274 from the Newton midcycle:\n\nhttps://etherpad.openstack.org/p/nova-newton-midcycle","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"31686dc2997efe57e1561e9ecbcbde96f7a17676","unresolved":false,"context_lines":[{"line_number":62,"context_line":"Proposed change"},{"line_number":63,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"This spec addresses live resize to both upsize and downsize, it\u0027s up to the"},{"line_number":66,"context_line":"hypervisor itself to support both upsize and downsize or upsize only"},{"line_number":67,"context_line":"(considering upsize is mostly used and supported)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"This blueprint will be implemented into 2 phases."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_d95e1843","line":67,"range":{"start_line":65,"start_character":0,"end_line":67,"end_character":49},"in_reply_to":"df7087c5_916b9eb5","updated":"2018-03-13 17:32:52.000000000","message":"I totally understand not live downsizing disk.  Without live downsize of CPU/RAM the usefulness of this feature would be significantly reduced.  We currently tie our proprietary hot-resize stuff (for CPU only) to the heat autoscaling functionality so the instance can scale up and down vertically with load.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"203fba59f7cb7736c9d061b401f5d3579d708b6a","unresolved":false,"context_lines":[{"line_number":62,"context_line":"Proposed change"},{"line_number":63,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"This spec addresses live resize to both upsize and downsize, it\u0027s up to the"},{"line_number":66,"context_line":"hypervisor itself to support both upsize and downsize or upsize only"},{"line_number":67,"context_line":"(considering upsize is mostly used and supported)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"This blueprint will be implemented into 2 phases."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_116d3bcb","line":67,"range":{"start_line":65,"start_character":0,"end_line":67,"end_character":49},"in_reply_to":"df7087c5_d95e1843","updated":"2018-03-14 05:41:32.000000000","message":"at least from our hypervisor point of view (z/VM) , it\u0027s ok to resize down cpu and memory and it\u0027s useful, disk is not doable\n\nand seems kvm support cpu and memory down as well","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"1e922ed151024e14abeda1786e1889a6da5ec499","unresolved":false,"context_lines":[{"line_number":86,"context_line":"feature."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"**a. How can users know if they can use this feature?**"},{"line_number":89,"context_line":"The users will have to check if the live resize nova API is enabled"},{"line_number":90,"context_line":"or if they have the permission to use it through to be added ``live-resize``"},{"line_number":91,"context_line":"policy."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"**b. If multiple resources are being live resized, what happens if some"},{"line_number":94,"context_line":"resources are already resized?**"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_0fa115aa","line":91,"range":{"start_line":89,"start_character":0,"end_line":91,"end_character":7},"updated":"2018-03-08 09:47:27.000000000","message":"some hypervisors don\u0027t support this, we might need something like \u0027capabilities\u0027 as well, so we won\u0027t rollback below","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"05831edc72ec032e411e88fb71573d1b2dfb5507","unresolved":false,"context_lines":[{"line_number":86,"context_line":"feature."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"**a. How can users know if they can use this feature?**"},{"line_number":89,"context_line":"The users will have to check if the live resize nova API is enabled"},{"line_number":90,"context_line":"or if they have the permission to use it through to be added ``live-resize``"},{"line_number":91,"context_line":"policy."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"**b. If multiple resources are being live resized, what happens if some"},{"line_number":94,"context_line":"resources are already resized?**"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_cb6f4890","line":91,"range":{"start_line":89,"start_character":0,"end_line":91,"end_character":7},"in_reply_to":"df7087c5_0fa115aa","updated":"2018-03-12 12:42:03.000000000","message":"true, makes sense.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"203fba59f7cb7736c9d061b401f5d3579d708b6a","unresolved":false,"context_lines":[{"line_number":86,"context_line":"feature."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"**a. How can users know if they can use this feature?**"},{"line_number":89,"context_line":"The users will have to check if the live resize nova API is enabled"},{"line_number":90,"context_line":"or if they have the permission to use it through to be added ``live-resize``"},{"line_number":91,"context_line":"policy."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"**b. If multiple resources are being live resized, what happens if some"},{"line_number":94,"context_line":"resources are already resized?**"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_91470b4d","line":91,"range":{"start_line":89,"start_character":0,"end_line":91,"end_character":7},"in_reply_to":"df7087c5_91e87ee2","updated":"2018-03-14 05:41:32.000000000","message":"The detailed info is helpful ,I will address this","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":86,"context_line":"feature."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"**a. How can users know if they can use this feature?**"},{"line_number":89,"context_line":"The users will have to check if the live resize nova API is enabled"},{"line_number":90,"context_line":"or if they have the permission to use it through to be added ``live-resize``"},{"line_number":91,"context_line":"policy."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"**b. If multiple resources are being live resized, what happens if some"},{"line_number":94,"context_line":"resources are already resized?**"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_91e87ee2","line":91,"range":{"start_line":89,"start_character":0,"end_line":91,"end_character":7},"in_reply_to":"df7087c5_cb6f4890","updated":"2018-03-13 14:44:23.000000000","message":"We would likely add an entry to the virt driver\u0027s \"capabilities\" dict, which we are going to be exposing as traits in placement on the compute node resource provider, see:\n\nhttps://review.openstack.org/#/c/538498/\n\nAnd then we can eventually use those to build pre-placement request filters:\n\nhttps://specs.openstack.org/openstack/nova-specs/specs/rocky/approved/placement-req-filter.html\n\nWhich means we can filter out hosts that don\u0027t support the live resize capability and fail early before we actually get to a compute host. Regarding the API, the user would have already gotten a 202 response at this point, but when scheduling fails they\u0027d get a fault recorded on the instance and an instance action event saying it failed.\n\nOperators could further isolate groups of hosts that support live resize using host aggregates and associate flavors to those hosts.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":90,"context_line":"or if they have the permission to use it through to be added ``live-resize``"},{"line_number":91,"context_line":"policy."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"**b. If multiple resources are being live resized, what happens if some"},{"line_number":94,"context_line":"resources are already resized?**"},{"line_number":95,"context_line":"The instance will have to rollback to the previous flavor. Performing a"},{"line_number":96,"context_line":"rollback through live-downsize is not supported by all hypervisors and guests"},{"line_number":97,"context_line":"and it can fail. In order to address this concern, there are two solutions:"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_b193425b","line":94,"range":{"start_line":93,"start_character":5,"end_line":94,"end_character":30},"updated":"2018-03-13 14:44:23.000000000","message":"This seems to be lacking something, like \"If multiple resources are being live resized and one fails, what happens if some resources are already resized?\".","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"081c47d971672c7ad9b578b3e01f9e256533fc96","unresolved":false,"context_lines":[{"line_number":90,"context_line":"or if they have the permission to use it through to be added ``live-resize``"},{"line_number":91,"context_line":"policy."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"**b. If multiple resources are being live resized, what happens if some"},{"line_number":94,"context_line":"resources are already resized?**"},{"line_number":95,"context_line":"The instance will have to rollback to the previous flavor. Performing a"},{"line_number":96,"context_line":"rollback through live-downsize is not supported by all hypervisors and guests"},{"line_number":97,"context_line":"and it can fail. In order to address this concern, there are two solutions:"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_61112f04","line":94,"range":{"start_line":93,"start_character":5,"end_line":94,"end_character":30},"in_reply_to":"df7087c5_a4168b48","updated":"2018-03-15 10:21:35.000000000","message":"Indeed, I agree that live-resizing one resource at a time is the safest choice, since not all hypervisors supports live downsizing.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"203fba59f7cb7736c9d061b401f5d3579d708b6a","unresolved":false,"context_lines":[{"line_number":90,"context_line":"or if they have the permission to use it through to be added ``live-resize``"},{"line_number":91,"context_line":"policy."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"**b. If multiple resources are being live resized, what happens if some"},{"line_number":94,"context_line":"resources are already resized?**"},{"line_number":95,"context_line":"The instance will have to rollback to the previous flavor. Performing a"},{"line_number":96,"context_line":"rollback through live-downsize is not supported by all hypervisors and guests"},{"line_number":97,"context_line":"and it can fail. In order to address this concern, there are two solutions:"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_a4168b48","line":94,"range":{"start_line":93,"start_character":5,"end_line":94,"end_character":30},"in_reply_to":"df7087c5_b193425b","updated":"2018-03-14 05:41:32.000000000","message":"I think we need revert all ,maybe some healthy check first but later we need revert all , just like resize (assume resize cpu + mem and if if cpu ok while mem fail, we need revert), but as line 95-96 mentioned some hypervisor don\u0027t support live down size, maybe only allow one per request for live-resize will be better option","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":94,"context_line":"resources are already resized?**"},{"line_number":95,"context_line":"The instance will have to rollback to the previous flavor. Performing a"},{"line_number":96,"context_line":"rollback through live-downsize is not supported by all hypervisors and guests"},{"line_number":97,"context_line":"and it can fail. In order to address this concern, there are two solutions:"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"1. Only allow live resize on one resource at a time. If live resize fails, the"},{"line_number":100,"context_line":"resource will maintain its old value."}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_b1cfc254","line":97,"range":{"start_line":97,"start_character":51,"end_line":97,"end_character":74},"updated":"2018-03-13 14:44:23.000000000","message":"Based on these two solutions, which do you plan on implementing? The latter sounds safer but also doesn\u0027t sound like \u0027live\u0027 resize if we have to pause things.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"081c47d971672c7ad9b578b3e01f9e256533fc96","unresolved":false,"context_lines":[{"line_number":94,"context_line":"resources are already resized?**"},{"line_number":95,"context_line":"The instance will have to rollback to the previous flavor. Performing a"},{"line_number":96,"context_line":"rollback through live-downsize is not supported by all hypervisors and guests"},{"line_number":97,"context_line":"and it can fail. In order to address this concern, there are two solutions:"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"1. Only allow live resize on one resource at a time. If live resize fails, the"},{"line_number":100,"context_line":"resource will maintain its old value."}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_a1342794","line":97,"range":{"start_line":97,"start_character":51,"end_line":97,"end_character":74},"in_reply_to":"df7087c5_b1cfc254","updated":"2018-03-15 10:21:35.000000000","message":"First one. We\u0027ve debated this during the PTG as well and we agreed that it\u0027s the safest choice.\n\nWill mention this in the next PS.\n\nTBH, I think it would be clearer to just have the decided-upon option here and delete the other.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":96,"context_line":"rollback through live-downsize is not supported by all hypervisors and guests"},{"line_number":97,"context_line":"and it can fail. In order to address this concern, there are two solutions:"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"1. Only allow live resize on one resource at a time. If live resize fails, the"},{"line_number":100,"context_line":"resource will maintain its old value."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"2. Save the VM state before live resize. This means that the VM will be paused"},{"line_number":103,"context_line":"(in order to prevent data loss during rollback) and its state will be saved"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_91295ee7","line":100,"range":{"start_line":99,"start_character":3,"end_line":100,"end_character":37},"updated":"2018-03-13 14:44:23.000000000","message":"Could you expand on this a bit?\n\nAre you saying it\u0027s possible to live resize disk, vcpu and memory concurrently and instead of that we\u0027d do them in serial?\n\nAnd if we did them in serial, but one fails, do we leave the others unchanged? Like let\u0027s say I\u0027m live resizing from VCPU 2-\u003e4 and MEMORY_MB 4096 -\u003e 8192. If VCPU is successfully resized but then MEMORY_MB fails, what do we do? Leave the instance with 4 VCPU and 4096 MEMORY_MB?\n\nHow would operators charge for this if their billing is based on consuming whole flavors? And we said at the Newton midcycle that we would live resize to entire flavors, not just piecemeal resources.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"081c47d971672c7ad9b578b3e01f9e256533fc96","unresolved":false,"context_lines":[{"line_number":96,"context_line":"rollback through live-downsize is not supported by all hypervisors and guests"},{"line_number":97,"context_line":"and it can fail. In order to address this concern, there are two solutions:"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"1. Only allow live resize on one resource at a time. If live resize fails, the"},{"line_number":100,"context_line":"resource will maintain its old value."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"2. Save the VM state before live resize. This means that the VM will be paused"},{"line_number":103,"context_line":"(in order to prevent data loss during rollback) and its state will be saved"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_e11bffc6","line":100,"range":{"start_line":99,"start_character":3,"end_line":100,"end_character":37},"in_reply_to":"df7087c5_91295ee7","updated":"2018-03-15 10:21:35.000000000","message":"Hm, I guess it\u0027s not clear enough. We are live resizing to entire flavors, but the new flavor will only have more of only one resource.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":103,"context_line":"(in order to prevent data loss during rollback) and its state will be saved"},{"line_number":104,"context_line":"as a snapshot. After the live resize succeeded, the VM will be unpaused and"},{"line_number":105,"context_line":"the saved state removed. Due to this, the VM activity will be disrupted for"},{"line_number":106,"context_line":"just a few seconds. If the live resize fails, the instance can be safely be"},{"line_number":107,"context_line":"rolledback to the saved state and unpaused."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"In order to perform live resize, the following criteria must be met:"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_1191ce47","line":106,"range":{"start_line":106,"start_character":0,"end_line":106,"end_character":18},"updated":"2018-03-13 14:44:23.000000000","message":"How do we know it would just be a few seconds? Doesn\u0027t it depend on the size of the guest and how active it is?","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"31686dc2997efe57e1561e9ecbcbde96f7a17676","unresolved":false,"context_lines":[{"line_number":103,"context_line":"(in order to prevent data loss during rollback) and its state will be saved"},{"line_number":104,"context_line":"as a snapshot. After the live resize succeeded, the VM will be unpaused and"},{"line_number":105,"context_line":"the saved state removed. Due to this, the VM activity will be disrupted for"},{"line_number":106,"context_line":"just a few seconds. If the live resize fails, the instance can be safely be"},{"line_number":107,"context_line":"rolledback to the saved state and unpaused."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"In order to perform live resize, the following criteria must be met:"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_f4544300","line":106,"range":{"start_line":106,"start_character":0,"end_line":106,"end_character":18},"in_reply_to":"df7087c5_1191ce47","updated":"2018-03-13 17:32:52.000000000","message":"If the state is saved to disk as a snapshot the outage time will depend on how big it is.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"081c47d971672c7ad9b578b3e01f9e256533fc96","unresolved":false,"context_lines":[{"line_number":103,"context_line":"(in order to prevent data loss during rollback) and its state will be saved"},{"line_number":104,"context_line":"as a snapshot. After the live resize succeeded, the VM will be unpaused and"},{"line_number":105,"context_line":"the saved state removed. Due to this, the VM activity will be disrupted for"},{"line_number":106,"context_line":"just a few seconds. If the live resize fails, the instance can be safely be"},{"line_number":107,"context_line":"rolledback to the saved state and unpaused."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"In order to perform live resize, the following criteria must be met:"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_21ca574d","line":106,"range":{"start_line":106,"start_character":0,"end_line":106,"end_character":18},"in_reply_to":"df7087c5_f4544300","updated":"2018-03-15 10:21:35.000000000","message":"I think it depends on the hypervisor. Disk snapshots are almost instantaneous on Hyper-V, it basically creates an .avhdx file (differencing disk) and then continue using the .avhdx file.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":106,"context_line":"just a few seconds. If the live resize fails, the instance can be safely be"},{"line_number":107,"context_line":"rolledback to the saved state and unpaused."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"In order to perform live resize, the following criteria must be met:"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":112,"context_line":"  contain a list of resizable resources. This is required, as not all guests"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_acdbe579","line":109,"updated":"2018-03-13 14:44:23.000000000","message":"Missing an entry for quota - the project will have to have available quota for the resize up.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"081c47d971672c7ad9b578b3e01f9e256533fc96","unresolved":false,"context_lines":[{"line_number":106,"context_line":"just a few seconds. If the live resize fails, the instance can be safely be"},{"line_number":107,"context_line":"rolledback to the saved state and unpaused."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"In order to perform live resize, the following criteria must be met:"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":112,"context_line":"  contain a list of resizable resources. This is required, as not all guests"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_e1bf7fa7","line":109,"in_reply_to":"df7087c5_acdbe579","updated":"2018-03-15 10:21:35.000000000","message":"good point.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"1e922ed151024e14abeda1786e1889a6da5ec499","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"In order to perform live resize, the following criteria must be met:"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":112,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":113,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":114,"context_line":"  memory resize)."},{"line_number":115,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":116,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":117,"context_line":"  created with boot from volume."},{"line_number":118,"context_line":"* Live downsize or upsize might have a larger/equal/smaller memory or amount"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_af690926","line":115,"range":{"start_line":111,"start_character":2,"end_line":115,"end_character":39},"updated":"2018-03-08 09:47:27.000000000","message":"this is doable, but a little bit complicated\ncan we let driver decide whether they allow cpu/memory but not disk (so raise exception when resize disk?)","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"081c47d971672c7ad9b578b3e01f9e256533fc96","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"In order to perform live resize, the following criteria must be met:"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":112,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":113,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":114,"context_line":"  memory resize)."},{"line_number":115,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":116,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":117,"context_line":"  created with boot from volume."},{"line_number":118,"context_line":"* Live downsize or upsize might have a larger/equal/smaller memory or amount"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_7fef7ae8","line":115,"range":{"start_line":111,"start_character":2,"end_line":115,"end_character":39},"in_reply_to":"df7087c5_31f73262","updated":"2018-03-15 10:21:35.000000000","message":"Indeed, that\u0027s what I want. It\u0027s better to fail fast than to accept the request, only to fail it afterwards.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"In order to perform live resize, the following criteria must be met:"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":112,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":113,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":114,"context_line":"  memory resize)."},{"line_number":115,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":116,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":117,"context_line":"  created with boot from volume."},{"line_number":118,"context_line":"* Live downsize or upsize might have a larger/equal/smaller memory or amount"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_31f73262","line":115,"range":{"start_line":111,"start_character":2,"end_line":115,"end_character":39},"in_reply_to":"df7087c5_7cd10823","updated":"2018-03-13 14:44:23.000000000","message":"\u003e Will have to ammend the spec to include a \"check_can_be_live_resized\" method (or some other better name), which will do this exact check (virt driver method).\n\nDo you plan on the API doing an RPC call to the virt driver with the given instance and requested flavor to validate if it can live resize the instance to that flavor? And then fail fast if it can\u0027t from the API?","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"05831edc72ec032e411e88fb71573d1b2dfb5507","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"In order to perform live resize, the following criteria must be met:"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":112,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":113,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":114,"context_line":"  memory resize)."},{"line_number":115,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":116,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":117,"context_line":"  created with boot from volume."},{"line_number":118,"context_line":"* Live downsize or upsize might have a larger/equal/smaller memory or amount"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_cbe2e801","line":115,"range":{"start_line":111,"start_character":2,"end_line":115,"end_character":39},"in_reply_to":"df7087c5_af690926","updated":"2018-03-12 12:42:03.000000000","message":"Both.\n\nNot all guest OSes support all types of live resizes. AFAIK, Windows guests don\u0027t support CPU live-resize (might be wrong, haven\u0027t checked newer versions of Windows, but older OSes, they probably don\u0027t), which is why we need the os_live_resize image property.\n\nAnd yes, the driver will also say yeay / nay on a live-resize, it it\u0027s able to live-resize the instance to the given flavor (for example, Hyper-V can only live-resize Generation 2 VMs). I brifly mentioned this at the PTG as well.\n\nWill have to ammend the spec to include a \"check_can_be_live_resized\" method (or some other better name), which will do this exact check (virt driver method).","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9ddcba2802632e556ecb1fd43a984dd31b8ffea3","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"In order to perform live resize, the following criteria must be met:"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":112,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":113,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":114,"context_line":"  memory resize)."},{"line_number":115,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":116,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":117,"context_line":"  created with boot from volume."},{"line_number":118,"context_line":"* Live downsize or upsize might have a larger/equal/smaller memory or amount"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_7cd10823","line":115,"range":{"start_line":111,"start_character":2,"end_line":115,"end_character":39},"in_reply_to":"df7087c5_cbe2e801","updated":"2018-03-13 09:42:02.000000000","message":"ok, I don\u0027t know much about windows guest , and I agree resize after the check is reasonable","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"1e922ed151024e14abeda1786e1889a6da5ec499","unresolved":false,"context_lines":[{"line_number":113,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":114,"context_line":"  memory resize)."},{"line_number":115,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":116,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":117,"context_line":"  created with boot from volume."},{"line_number":118,"context_line":"* Live downsize or upsize might have a larger/equal/smaller memory or amount"},{"line_number":119,"context_line":"  of vCPUs, up to hypervisor to decide whether it\u0027s supported or not, if it\u0027s"},{"line_number":120,"context_line":"  not supported some kind of exception like \u0027LiveResizeNotAccepted\u0027 will be"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_ef606135","line":117,"range":{"start_line":116,"start_character":2,"end_line":117,"end_character":32},"updated":"2018-03-08 09:47:27.000000000","message":"some hypervisor support downsize disks?","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9ddcba2802632e556ecb1fd43a984dd31b8ffea3","unresolved":false,"context_lines":[{"line_number":113,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":114,"context_line":"  memory resize)."},{"line_number":115,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":116,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":117,"context_line":"  created with boot from volume."},{"line_number":118,"context_line":"* Live downsize or upsize might have a larger/equal/smaller memory or amount"},{"line_number":119,"context_line":"  of vCPUs, up to hypervisor to decide whether it\u0027s supported or not, if it\u0027s"},{"line_number":120,"context_line":"  not supported some kind of exception like \u0027LiveResizeNotAccepted\u0027 will be"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_e11011ab","line":117,"range":{"start_line":116,"start_character":2,"end_line":117,"end_character":32},"in_reply_to":"df7087c5_4f070d1e","updated":"2018-03-13 09:42:02.000000000","message":"yes, exactly ,that make a lot sense","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"05831edc72ec032e411e88fb71573d1b2dfb5507","unresolved":false,"context_lines":[{"line_number":113,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":114,"context_line":"  memory resize)."},{"line_number":115,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":116,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":117,"context_line":"  created with boot from volume."},{"line_number":118,"context_line":"* Live downsize or upsize might have a larger/equal/smaller memory or amount"},{"line_number":119,"context_line":"  of vCPUs, up to hypervisor to decide whether it\u0027s supported or not, if it\u0027s"},{"line_number":120,"context_line":"  not supported some kind of exception like \u0027LiveResizeNotAccepted\u0027 will be"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_4f070d1e","line":117,"range":{"start_line":116,"start_character":2,"end_line":117,"end_character":32},"in_reply_to":"df7087c5_ef606135","updated":"2018-03-12 12:42:03.000000000","message":"Yeah, maybe, but it\u0027s trickier, IMO. The guest must prepare the disk beforehand (free the disk, defragment, reduce the partition size, etc.). Mistakes can lead to data loss, which is bad. IMO, I\u0027d like to only focus on upsizing at the moment.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":116,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":117,"context_line":"  created with boot from volume."},{"line_number":118,"context_line":"* Live downsize or upsize might have a larger/equal/smaller memory or amount"},{"line_number":119,"context_line":"  of vCPUs, up to hypervisor to decide whether it\u0027s supported or not, if it\u0027s"},{"line_number":120,"context_line":"  not supported some kind of exception like \u0027LiveResizeNotAccepted\u0027 will be"},{"line_number":121,"context_line":"  returned."}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_71f84a48","line":118,"range":{"start_line":118,"start_character":7,"end_line":118,"end_character":15},"updated":"2018-03-13 14:44:23.000000000","message":"Again we said we weren\u0027t going to support live downsize in previous discussion about this feature.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"081c47d971672c7ad9b578b3e01f9e256533fc96","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  e.g.: os_live_resize\u003ddisk,memory,vcpu"},{"line_number":116,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":117,"context_line":"  created with boot from volume."},{"line_number":118,"context_line":"* Live downsize or upsize might have a larger/equal/smaller memory or amount"},{"line_number":119,"context_line":"  of vCPUs, up to hypervisor to decide whether it\u0027s supported or not, if it\u0027s"},{"line_number":120,"context_line":"  not supported some kind of exception like \u0027LiveResizeNotAccepted\u0027 will be"},{"line_number":121,"context_line":"  returned."}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_9f428eaa","line":118,"range":{"start_line":118,"start_character":7,"end_line":118,"end_character":15},"in_reply_to":"df7087c5_71f84a48","updated":"2018-03-15 10:21:35.000000000","message":"Done","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"1e922ed151024e14abeda1786e1889a6da5ec499","unresolved":false,"context_lines":[{"line_number":143,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":144,"context_line":"  enabled in image metadata."},{"line_number":145,"context_line":"* In order for the nova live-resize API call to be accepted, it must be enabled"},{"line_number":146,"context_line":"  in the ``/etc/nova/policy.json`` file (disabled by default)."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"nova API:"},{"line_number":149,"context_line":"  See `REST API impact` section."}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_2fcc1934","line":146,"range":{"start_line":146,"start_character":9,"end_line":146,"end_character":62},"updated":"2018-03-08 09:47:27.000000000","message":"policy already in code now","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9ddcba2802632e556ecb1fd43a984dd31b8ffea3","unresolved":false,"context_lines":[{"line_number":143,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":144,"context_line":"  enabled in image metadata."},{"line_number":145,"context_line":"* In order for the nova live-resize API call to be accepted, it must be enabled"},{"line_number":146,"context_line":"  in the ``/etc/nova/policy.json`` file (disabled by default)."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"nova API:"},{"line_number":149,"context_line":"  See `REST API impact` section."}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_3c9cf068","line":146,"range":{"start_line":146,"start_character":9,"end_line":146,"end_character":62},"in_reply_to":"df7087c5_2b904443","updated":"2018-03-13 09:42:02.000000000","message":"yes, just make sure we will update nova/policies/","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"05831edc72ec032e411e88fb71573d1b2dfb5507","unresolved":false,"context_lines":[{"line_number":143,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":144,"context_line":"  enabled in image metadata."},{"line_number":145,"context_line":"* In order for the nova live-resize API call to be accepted, it must be enabled"},{"line_number":146,"context_line":"  in the ``/etc/nova/policy.json`` file (disabled by default)."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"nova API:"},{"line_number":149,"context_line":"  See `REST API impact` section."}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_2b904443","line":146,"range":{"start_line":146,"start_character":9,"end_line":146,"end_character":62},"in_reply_to":"df7087c5_2fcc1934","updated":"2018-03-12 12:42:03.000000000","message":"policy is indeed in code, but you can still have a /etc/nova/policy.json file in which you override the default policy values.\n\nSince we\u0027re disabling live-resize API by default, it will have to be enabled manually through this file.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"1e922ed151024e14abeda1786e1889a6da5ec499","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"python-openstackclient:"},{"line_number":152,"context_line":"  Live resize feature will be used as such:"},{"line_number":153,"context_line":"    openstack server resize [--flavor \u003cflavor\u003e --live | --confirm | --revert]"},{"line_number":154,"context_line":"                            [--wait] \u003cserver\u003e"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_afd7c9bf","line":153,"range":{"start_line":153,"start_character":47,"end_line":153,"end_character":53},"updated":"2018-03-08 09:47:27.000000000","message":"guess this is the only change to CLI?","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9ddcba2802632e556ecb1fd43a984dd31b8ffea3","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"python-openstackclient:"},{"line_number":152,"context_line":"  Live resize feature will be used as such:"},{"line_number":153,"context_line":"    openstack server resize [--flavor \u003cflavor\u003e --live | --confirm | --revert]"},{"line_number":154,"context_line":"                            [--wait] \u003cserver\u003e"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_fc8bd81b","line":153,"range":{"start_line":153,"start_character":47,"end_line":153,"end_character":53},"in_reply_to":"df7087c5_2bde0411","updated":"2018-03-13 09:42:02.000000000","message":"ok, works for me","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"05831edc72ec032e411e88fb71573d1b2dfb5507","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"python-openstackclient:"},{"line_number":152,"context_line":"  Live resize feature will be used as such:"},{"line_number":153,"context_line":"    openstack server resize [--flavor \u003cflavor\u003e --live | --confirm | --revert]"},{"line_number":154,"context_line":"                            [--wait] \u003cserver\u003e"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_2bde0411","line":153,"range":{"start_line":153,"start_character":47,"end_line":153,"end_character":53},"in_reply_to":"df7087c5_afd7c9bf","updated":"2018-03-12 12:42:03.000000000","message":"Yeah, there\u0027s not much to it. It will only have to take the microversion into account, but I think that\u0027s implicit.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":164,"context_line":"  * A new method must be implemented, called ``live_resize``, which will be"},{"line_number":165,"context_line":"    called through RPC by the conductor, as this feature has a significantly"},{"line_number":166,"context_line":"    different behaviour than the cold migration."},{"line_number":167,"context_line":"  * Live-resize will be supported only on the same host in Phase I. Thus, it"},{"line_number":168,"context_line":"    must raise an exception if the host is different. In Phase II, live-resize"},{"line_number":169,"context_line":"    to different host will be supported."},{"line_number":170,"context_line":"  * It will check whether the hypervisor is able to perform this feature by"},{"line_number":171,"context_line":"    checking its capabilities."}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_8c3dc1c5","line":168,"range":{"start_line":167,"start_character":4,"end_line":168,"end_character":53},"updated":"2018-03-13 14:44:23.000000000","message":"We can control this in the implementation. In Phase I, the API could even just RPC cast to the instance.host, there would be no need for the API to cast to conductor which would just cast to compute (instance.host). Maybe you want to build the framework for the live resize task into conductor even though it would be pretty simple in Phase I?\n\nThinking about this some more, I am reminded of the situation we have with rebuilding with a new image. There was a CVE which prompted us to start running the new image through the scheduler even though we\u0027re going to rebuild on the same host - we have to validate via the scheduler filters that the requested image is valid for the current host. This has led to quite a number of complications, regressions and errata for the original CVE fix, but I think we have the same problem since flavors are tied to aggregates (and any other number of scheduling filters).\n\nSo even in Phase I, I think conductor would need to set force_hosts/nodes for the request spec and run the new flavor through the scheduler to validate the flavor on the current instance.host to make sure it\u0027s OK before casting to the compute for the live resize.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"081c47d971672c7ad9b578b3e01f9e256533fc96","unresolved":false,"context_lines":[{"line_number":164,"context_line":"  * A new method must be implemented, called ``live_resize``, which will be"},{"line_number":165,"context_line":"    called through RPC by the conductor, as this feature has a significantly"},{"line_number":166,"context_line":"    different behaviour than the cold migration."},{"line_number":167,"context_line":"  * Live-resize will be supported only on the same host in Phase I. Thus, it"},{"line_number":168,"context_line":"    must raise an exception if the host is different. In Phase II, live-resize"},{"line_number":169,"context_line":"    to different host will be supported."},{"line_number":170,"context_line":"  * It will check whether the hypervisor is able to perform this feature by"},{"line_number":171,"context_line":"    checking its capabilities."}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_e4221fb9","line":168,"range":{"start_line":167,"start_character":4,"end_line":168,"end_character":53},"in_reply_to":"df7087c5_8c3dc1c5","updated":"2018-03-15 10:21:35.000000000","message":"Yeah, that\u0027s what I was thinking as well. I\u0027ve mentioned at the PTG that I\u0027ve added a compute manager / virt driver method \"can_instance_live_resize\", which will return True / False based on the target flavor and virt driver\u0027s capabilities (and in case of libvirt, if the instance was created with a flavor having the extra_specs \"os:max_vcpus/memory/disk\"). This will help us error out fast if live-resize is not possible for the given instance / flavor (rather than accepting the request and returning a 2xx code, and to see it fail later).\n\nI\u0027ve already added the live resize conductor task, and it is indeed pretty simple. But, it only remain as such - we might not implement Phase II at all, for a few different reasons:\n\n* Phase II implies live-migration, which is typically an admin only API, while live-resize would be typically be set as admin_or_owner.\n* Because we\u0027ll go with the one-resource-at-a-time live-resize, this might cause the instance to bounce from host to host for each resource (worst case scenario), which is not great.\n\nI\u0027m thinking of removing Phase II from the spec.\n\nAgreed on the scheduler part.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"820662617026ff53adb385698e4b17151478062e","unresolved":false,"context_lines":[{"line_number":184,"context_line":"Alternatives"},{"line_number":185,"context_line":"------------"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"None"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Data model impact"},{"line_number":190,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"1f9dbf25_eb24cb0f","line":187,"range":{"start_line":187,"start_character":0,"end_line":187,"end_character":4},"updated":"2018-03-01 21:48:10.000000000","message":"As an alternative, what about implementing a \"nova scale \u003cserver\u003e \u003cresource\u003e \u003camount\u003e\" operation?  (Where amount could be positive or negative.)  Rather than resizing to a discrete flavor (which could result in flavor explosion for all the desired intermediate sizes), I could simply say \"scale up my disk 10GB\", or \"scale up my dedicated CPUs by 1\", or \"scale down my RAM by 512MB\".\n\nThe flavor details are cached with the Instance, so it should be possible to just update the stored resource size even if that doesn\u0027t map to any actual flavor in nova.\n\nThis would also map more cleanly to the \"update one resource at a time model\" (option 1 above) so the natural failure mode (if the resource can\u0027t be allocated or can\u0027t be freed up) would be to revert back to the state before the call.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"1e922ed151024e14abeda1786e1889a6da5ec499","unresolved":false,"context_lines":[{"line_number":184,"context_line":"Alternatives"},{"line_number":185,"context_line":"------------"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"None"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Data model impact"},{"line_number":190,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_6f18d11c","line":187,"range":{"start_line":187,"start_character":0,"end_line":187,"end_character":4},"in_reply_to":"1f9dbf25_84d731ee","updated":"2018-03-08 09:47:27.000000000","message":"it\u0027s a good idea but looks it will make things really complicated, e.g , charge might be a problem if you allow too small granulaity , so use flavor might be easier for now","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"1a7e45f52a846cf0329dfb8826299e5115ea9446","unresolved":false,"context_lines":[{"line_number":184,"context_line":"Alternatives"},{"line_number":185,"context_line":"------------"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"None"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Data model impact"},{"line_number":190,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"1f9dbf25_84d731ee","line":187,"range":{"start_line":187,"start_character":0,"end_line":187,"end_character":4},"in_reply_to":"1f9dbf25_eb24cb0f","updated":"2018-03-02 11:44:23.000000000","message":"This looks interesting, and yeah, it certainly looks more sane and user-friendly, but I\u0027m wondering about how the resource views and allocations would look like. AFAIK, the allocations are based on what the flavor values are. The allocations are split per resource, which would make updating one resource simpler, but I\u0027m wondering if there aren\u0027t any other implications I\u0027m not seeing at this point.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":184,"context_line":"Alternatives"},{"line_number":185,"context_line":"------------"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"None"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Data model impact"},{"line_number":190,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_cc5739ca","line":187,"range":{"start_line":187,"start_character":0,"end_line":187,"end_character":4},"in_reply_to":"df7087c5_6f18d11c","updated":"2018-03-13 14:44:23.000000000","message":"Chris\u0027 idea came up at the Rocky PTG and was mostly rejected due to complexity, billing and capacity planning issues, which is why we use flavors.\n\nAllowing users to specify individual resources when creating a server was brought up by IBM 6+ years ago with the \u0027dynamic flavors\u0027 idea and it was rejected on the same grounds.\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2013-May/009055.html","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"31686dc2997efe57e1561e9ecbcbde96f7a17676","unresolved":false,"context_lines":[{"line_number":184,"context_line":"Alternatives"},{"line_number":185,"context_line":"------------"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"None"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Data model impact"},{"line_number":190,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_94fdc7b2","line":187,"range":{"start_line":187,"start_character":0,"end_line":187,"end_character":4},"in_reply_to":"df7087c5_cc5739ca","updated":"2018-03-13 17:32:52.000000000","message":"The complexity is actually less, since you only need to change one resource at a time.  I get the capacity planning argument though.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":218,"context_line":"Security impact"},{"line_number":219,"context_line":"---------------"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"None"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"Upgrade impact"},{"line_number":224,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_cc0c19ee","line":221,"updated":"2018-03-13 14:44:23.000000000","message":"Should reiterate the new policy rule, disabled by default, here.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"28a5964f13229d20ab6099ef66afab89e774499f","unresolved":false,"context_lines":[{"line_number":218,"context_line":"Security impact"},{"line_number":219,"context_line":"---------------"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"None"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"Upgrade impact"},{"line_number":224,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_8b3822a0","line":221,"in_reply_to":"df7087c5_cc0c19ee","updated":"2018-03-14 19:53:04.000000000","message":"Done","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":223,"context_line":"Upgrade impact"},{"line_number":224,"context_line":"--------------"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"None"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Notifications impact"},{"line_number":229,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_ace5250b","line":226,"updated":"2018-03-13 14:44:23.000000000","message":"Thinking about this, if operators are doing rolling upgrades of their computes, then they\u0027ll have instances on some older computes that won\u0027t yet have the code to support live resize.\n\nIf the API is going to RPC call a validation method in the compute service, it would fail fast if that RPC version isn\u0027t available on the compute because it\u0027s too old, so you\u0027d get a 409 at that point from the API.\n\nThe other thing is the pre-request placement filter idea I mentioned earlier, where we can determine based on the capabilities-derived traits if the compute host supports live resize or not and fail during our scheduling validation. The user would get a 202 from the API but eventually the operation would fail, a fault and instance action event would be recorded, and we\u0027d be done.\n\nAlternatively, operators can simply disable the feature via policy until they are fully upgraded and adjusted host aggregates to support it.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":228,"context_line":"Notifications impact"},{"line_number":229,"context_line":"--------------------"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"None"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Other end user impact"},{"line_number":234,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_4c9c8969","line":231,"updated":"2018-03-13 14:44:23.000000000","message":"We have notifications for cold resize, so we should also add new versioned notifications for live resize with similar payloads.\n\nhttps://github.com/openstack/nova/blob/107ad403d46c9d6961c5b15c68df0fa24014a832/nova/notifications/objects/instance.py#L432","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"31686dc2997efe57e1561e9ecbcbde96f7a17676","unresolved":false,"context_lines":[{"line_number":228,"context_line":"Notifications impact"},{"line_number":229,"context_line":"--------------------"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"None"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Other end user impact"},{"line_number":234,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_b4e80be2","line":231,"in_reply_to":"df7087c5_4c9c8969","updated":"2018-03-13 17:32:52.000000000","message":"Agreed, I think this would make sense for external orchestration entities that might be driving the scaling in an automated way.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"28a5964f13229d20ab6099ef66afab89e774499f","unresolved":false,"context_lines":[{"line_number":228,"context_line":"Notifications impact"},{"line_number":229,"context_line":"--------------------"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"None"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Other end user impact"},{"line_number":234,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_ab0ba6d3","line":231,"in_reply_to":"df7087c5_b4e80be2","updated":"2018-03-14 19:53:04.000000000","message":"Already added, thanks to gibi. Will amend the spec to reflect this.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":234,"context_line":"---------------------"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"The guest OS must have a mechanism to detect when the disk size changes in"},{"line_number":237,"context_line":"order to do a `growroot` style operation. At the moment, cloud-init and"},{"line_number":238,"context_line":"cloudbase-init performs this check on boot."},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"Performance Impact"},{"line_number":241,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_cc96593f","line":238,"range":{"start_line":237,"start_character":42,"end_line":238,"end_character":43},"updated":"2018-03-13 14:44:23.000000000","message":"I\u0027ve heard that a lot of images are written such that cloud-init is disabled/deleted after the initial boot of the OS, so even if the user rebooted the VM the root disk might not be automatically expanded. What\u0027s the solution then? End-user documentation for what they need to do in their guest after a live resize changes the disk?","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"28a5964f13229d20ab6099ef66afab89e774499f","unresolved":false,"context_lines":[{"line_number":234,"context_line":"---------------------"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"The guest OS must have a mechanism to detect when the disk size changes in"},{"line_number":237,"context_line":"order to do a `growroot` style operation. At the moment, cloud-init and"},{"line_number":238,"context_line":"cloudbase-init performs this check on boot."},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"Performance Impact"},{"line_number":241,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_ebfc3eb6","line":238,"range":{"start_line":237,"start_character":42,"end_line":238,"end_character":43},"in_reply_to":"df7087c5_74c7d365","updated":"2018-03-14 19:53:04.000000000","message":"I agree, this would also affect cold resize.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"31686dc2997efe57e1561e9ecbcbde96f7a17676","unresolved":false,"context_lines":[{"line_number":234,"context_line":"---------------------"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"The guest OS must have a mechanism to detect when the disk size changes in"},{"line_number":237,"context_line":"order to do a `growroot` style operation. At the moment, cloud-init and"},{"line_number":238,"context_line":"cloudbase-init performs this check on boot."},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"Performance Impact"},{"line_number":241,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_74c7d365","line":238,"range":{"start_line":237,"start_character":42,"end_line":238,"end_character":43},"in_reply_to":"df7087c5_cc96593f","updated":"2018-03-13 17:32:52.000000000","message":"Wouldn\u0027t we have this problem now with a cold resize?","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":245,"context_line":"Other deployer impact"},{"line_number":246,"context_line":"---------------------"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"The users is able to control the live-resize functions through the"},{"line_number":249,"context_line":"``os_compute_api:servers:live_resize`` policy in ``policy.json`` file."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Users will have to add the image properties ``os_live_resize`` and in order to"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_8ccdc167","line":248,"range":{"start_line":248,"start_character":0,"end_line":248,"end_character":12},"updated":"2018-03-13 14:44:23.000000000","message":"Operators are able to control...","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":248,"context_line":"The users is able to control the live-resize functions through the"},{"line_number":249,"context_line":"``os_compute_api:servers:live_resize`` policy in ``policy.json`` file."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Users will have to add the image properties ``os_live_resize`` and in order to"},{"line_number":252,"context_line":"properly use this feature."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_8cd2a1ff","line":251,"range":{"start_line":251,"start_character":0,"end_line":251,"end_character":5},"updated":"2018-03-13 14:44:23.000000000","message":"Operators - would an end user know if the OS in the image supports live resize of disk/cpu/ram?","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":248,"context_line":"The users is able to control the live-resize functions through the"},{"line_number":249,"context_line":"``os_compute_api:servers:live_resize`` policy in ``policy.json`` file."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Users will have to add the image properties ``os_live_resize`` and in order to"},{"line_number":252,"context_line":"properly use this feature."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_0cdf710d","line":251,"range":{"start_line":251,"start_character":63,"end_line":251,"end_character":70},"updated":"2018-03-13 14:44:23.000000000","message":"s/and in/in/","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"94f55985324429cd1a76c4117dfde872aa98c91c","unresolved":false,"context_lines":[{"line_number":248,"context_line":"The users is able to control the live-resize functions through the"},{"line_number":249,"context_line":"``os_compute_api:servers:live_resize`` policy in ``policy.json`` file."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Users will have to add the image properties ``os_live_resize`` and in order to"},{"line_number":252,"context_line":"properly use this feature."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_6ba289b0","line":251,"range":{"start_line":251,"start_character":0,"end_line":251,"end_character":5},"in_reply_to":"df7087c5_14ae9797","updated":"2018-03-13 21:44:15.000000000","message":"This does get sticky because end users can resize today but can\u0027t cold migrate (although it\u0027s the same except for the flavor changing under the covers). Presumably if your users can resize they should be able to live resize, but then they have to know about the image restrictions here, which gets weird.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"31686dc2997efe57e1561e9ecbcbde96f7a17676","unresolved":false,"context_lines":[{"line_number":248,"context_line":"The users is able to control the live-resize functions through the"},{"line_number":249,"context_line":"``os_compute_api:servers:live_resize`` policy in ``policy.json`` file."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Users will have to add the image properties ``os_live_resize`` and in order to"},{"line_number":252,"context_line":"properly use this feature."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"Developer impact"}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_14ae9797","line":251,"range":{"start_line":251,"start_character":0,"end_line":251,"end_character":5},"in_reply_to":"df7087c5_8cd2a1ff","updated":"2018-03-13 17:32:52.000000000","message":"Given that the end user can potentially make arbitrary images, isn\u0027t the end user the only one that could know?\n\nI mean, they\u0027d need to build the image to work with certain hypervisors to get the hot-plug mechanism working properly...","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":256,"context_line":""},{"line_number":257,"context_line":"``live_resize`` method will be added to the nova.virt.ComputeDriver class,"},{"line_number":258,"context_line":"which will have to be implemented by the Nova drivers. When the exposing the"},{"line_number":259,"context_line":"host capabilities blueprint [5] merges, the drivers will also have to report"},{"line_number":260,"context_line":"the ``os_live_resize`` capability appropriately, depending on the hypervisor"},{"line_number":261,"context_line":"version."},{"line_number":262,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_cc0bb97a","line":259,"range":{"start_line":259,"start_character":28,"end_line":259,"end_character":31},"updated":"2018-03-13 14:44:23.000000000","message":"This would be [6] now, and is likely superseded by https://review.openstack.org/#/c/538498/.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"28a5964f13229d20ab6099ef66afab89e774499f","unresolved":false,"context_lines":[{"line_number":256,"context_line":""},{"line_number":257,"context_line":"``live_resize`` method will be added to the nova.virt.ComputeDriver class,"},{"line_number":258,"context_line":"which will have to be implemented by the Nova drivers. When the exposing the"},{"line_number":259,"context_line":"host capabilities blueprint [5] merges, the drivers will also have to report"},{"line_number":260,"context_line":"the ``os_live_resize`` capability appropriately, depending on the hypervisor"},{"line_number":261,"context_line":"version."},{"line_number":262,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_0114f342","line":259,"range":{"start_line":259,"start_character":28,"end_line":259,"end_character":31},"in_reply_to":"df7087c5_cc0bb97a","updated":"2018-03-14 19:53:04.000000000","message":"Done","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":277,"context_line":"----------"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"* ``os_live_resize`` field added to the ``ImageMetaProps`` and"},{"line_number":280,"context_line":"  ``HostCapabilities`` objects."},{"line_number":281,"context_line":"* ComputeManager ``live_resize`` implementation."},{"line_number":282,"context_line":"* ComputeDriver ``live_resize`` added."},{"line_number":283,"context_line":"* Nova Drivers implementation."}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_cce739ac","line":280,"range":{"start_line":280,"start_character":4,"end_line":280,"end_character":20},"updated":"2018-03-13 14:44:23.000000000","message":"This doesn\u0027t exist...","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"28a5964f13229d20ab6099ef66afab89e774499f","unresolved":false,"context_lines":[{"line_number":277,"context_line":"----------"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"* ``os_live_resize`` field added to the ``ImageMetaProps`` and"},{"line_number":280,"context_line":"  ``HostCapabilities`` objects."},{"line_number":281,"context_line":"* ComputeManager ``live_resize`` implementation."},{"line_number":282,"context_line":"* ComputeDriver ``live_resize`` added."},{"line_number":283,"context_line":"* Nova Drivers implementation."}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_5cadffe6","line":280,"range":{"start_line":280,"start_character":4,"end_line":280,"end_character":20},"in_reply_to":"df7087c5_cce739ac","updated":"2018-03-14 19:53:04.000000000","message":"True, this was supposed to be added on top of the expose-host-capabilities spec, which is why this was here. No longer the case though. Will remove.","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ed01a66122cab43a6421b30b5131f23428dbc545","unresolved":false,"context_lines":[{"line_number":283,"context_line":"* Nova Drivers implementation."},{"line_number":284,"context_line":"* conductor ``live_resize_instance`` implementation."},{"line_number":285,"context_line":"* nova-api `live_resize` microversion."},{"line_number":286,"context_line":"* python-openstackclient ``live-resize`` command."},{"line_number":287,"context_line":"* tempest test."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_2c9cb50d","line":286,"range":{"start_line":286,"start_character":27,"end_line":286,"end_character":38},"updated":"2018-03-13 14:44:23.000000000","message":"resize --live","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"28a5964f13229d20ab6099ef66afab89e774499f","unresolved":false,"context_lines":[{"line_number":283,"context_line":"* Nova Drivers implementation."},{"line_number":284,"context_line":"* conductor ``live_resize_instance`` implementation."},{"line_number":285,"context_line":"* nova-api `live_resize` microversion."},{"line_number":286,"context_line":"* python-openstackclient ``live-resize`` command."},{"line_number":287,"context_line":"* tempest test."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":""}],"source_content_type":"text/x-rst","patch_set":29,"id":"df7087c5_7ca243fe","line":286,"range":{"start_line":286,"start_character":27,"end_line":286,"end_character":38},"in_reply_to":"df7087c5_2c9cb50d","updated":"2018-03-14 19:53:04.000000000","message":"Done","commit_id":"0270cfaa80664c71777a33645b341b69d928a0b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6bef6f6061b20568b86d8d8a9a42d9fc05d7a07","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The Support Matrix for online resize is as follows:"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"+-------------------+---------------------+----------------+---------+---------+"},{"line_number":32,"context_line":"|                   |        Disk         |     Memory     |  VCPUs  |  PCIs   |"},{"line_number":33,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":34,"context_line":"| **Hyper-V**       | ✓ [1a]_ [1b]_ [1c]_ | ✓ [1c]_ [1d]_  | X       | ✓ [1e]_ |"},{"line_number":35,"context_line":"+-------------------+---------------------+----------------+---------+---------+"},{"line_number":36,"context_line":"| **KVM + Libvirt** | ✓ [2a]_             | ✓ [2b]_ [2c]_  | ✓ [2d]_ | ✓ [2e]_ |"},{"line_number":37,"context_line":"+-------------------+---------------------+----------------+---------+---------+"},{"line_number":38,"context_line":"| **VMWare**        | ✓ [3a]_             | ✓ [3b]_        | ✓ [3c]_ | ✓ [3d]_ |"},{"line_number":39,"context_line":"+-------------------+---------------------+----------------+---------+---------+"},{"line_number":40,"context_line":"| **XenServer**     | ✓ [4a]_ [4b]_       | ✓ [4c]_        | ✓ [4d]_ | ✓ [4e]_ |"},{"line_number":41,"context_line":"+-------------------+---------------------+----------------+---------+---------+"},{"line_number":42,"context_line":"| **PowerVM**       | ✓                   | ✓              | ✓       | ✓       |"},{"line_number":43,"context_line":"+-------------------+---------------------+----------------+---------+---------+"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Minimum hypervisor version required:"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_5427f4ca","line":43,"range":{"start_line":31,"start_character":0,"end_line":43,"end_character":80},"updated":"2018-03-15 14:11:28.000000000","message":"I guess you need to shave something off this to keep the tox job happy. Maybe use the list-table directive instead","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c6643e9742f52ae4788727a54e99236086a453e4","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The Support Matrix for online resize is as follows:"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"+-------------------+---------------------+----------------+---------+---------+"},{"line_number":32,"context_line":"|                   |        Disk         |     Memory     |  VCPUs  |  PCIs   |"},{"line_number":33,"context_line":"+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":34,"context_line":"| **Hyper-V**       | ✓ [1a]_ [1b]_ [1c]_ | ✓ [1c]_ [1d]_  | X       | ✓ [1e]_ |"},{"line_number":35,"context_line":"+-------------------+---------------------+----------------+---------+---------+"},{"line_number":36,"context_line":"| **KVM + Libvirt** | ✓ [2a]_             | ✓ [2b]_ [2c]_  | ✓ [2d]_ | ✓ [2e]_ |"},{"line_number":37,"context_line":"+-------------------+---------------------+----------------+---------+---------+"},{"line_number":38,"context_line":"| **VMWare**        | ✓ [3a]_             | ✓ [3b]_        | ✓ [3c]_ | ✓ [3d]_ |"},{"line_number":39,"context_line":"+-------------------+---------------------+----------------+---------+---------+"},{"line_number":40,"context_line":"| **XenServer**     | ✓ [4a]_ [4b]_       | ✓ [4c]_        | ✓ [4d]_ | ✓ [4e]_ |"},{"line_number":41,"context_line":"+-------------------+---------------------+----------------+---------+---------+"},{"line_number":42,"context_line":"| **PowerVM**       | ✓                   | ✓              | ✓       | ✓       |"},{"line_number":43,"context_line":"+-------------------+---------------------+----------------+---------+---------+"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Minimum hypervisor version required:"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_88b48c81","line":43,"range":{"start_line":31,"start_character":0,"end_line":43,"end_character":80},"in_reply_to":"df7087c5_5427f4ca","updated":"2018-03-15 14:42:50.000000000","message":"oh cool, I didn\u0027t know about the list-table directive.","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6bef6f6061b20568b86d8d8a9a42d9fc05d7a07","unresolved":false,"context_lines":[{"line_number":86,"context_line":"and it can fail. In order to address this concern, there are two solutions:"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"1. Only allow live resize to flavors having only one resource different (e.g.:"},{"line_number":89,"context_line":"target flavor has the same amount of memory and vCPUs, but more disk). This"},{"line_number":90,"context_line":"will allow us to live resize one resource at a time, and if the operation"},{"line_number":91,"context_line":"fails, the resource will maintain its old value."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"2. Save the VM state before live resize. This means that the VM will be paused"},{"line_number":94,"context_line":"(in order to prevent data loss during rollback) and its state will be saved"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_883eccbe","line":91,"range":{"start_line":89,"start_character":0,"end_line":91,"end_character":48},"updated":"2018-03-15 14:11:28.000000000","message":"nit: you need to indent these lines to get it to render as an ordered list","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c6643e9742f52ae4788727a54e99236086a453e4","unresolved":false,"context_lines":[{"line_number":86,"context_line":"and it can fail. In order to address this concern, there are two solutions:"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"1. Only allow live resize to flavors having only one resource different (e.g.:"},{"line_number":89,"context_line":"target flavor has the same amount of memory and vCPUs, but more disk). This"},{"line_number":90,"context_line":"will allow us to live resize one resource at a time, and if the operation"},{"line_number":91,"context_line":"fails, the resource will maintain its old value."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"2. Save the VM state before live resize. This means that the VM will be paused"},{"line_number":94,"context_line":"(in order to prevent data loss during rollback) and its state will be saved"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_48aaf418","line":91,"range":{"start_line":89,"start_character":0,"end_line":91,"end_character":48},"in_reply_to":"df7087c5_883eccbe","updated":"2018-03-15 14:42:50.000000000","message":"Done","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6bef6f6061b20568b86d8d8a9a42d9fc05d7a07","unresolved":false,"context_lines":[{"line_number":98,"context_line":"rolledback to the saved state and unpaused."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"This spec proposes to implement the first solution, as it is the safer one and"},{"line_number":101,"context_line":"does not imply disrupting the VM\u0027s activity."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"In order to perform live resize, the following criteria must be met:"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_68449847","line":101,"range":{"start_line":101,"start_character":0,"end_line":101,"end_character":44},"updated":"2018-03-15 14:11:28.000000000","message":"It\u0027s also far less magic and magic usually ends up hurting us","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c6643e9742f52ae4788727a54e99236086a453e4","unresolved":false,"context_lines":[{"line_number":98,"context_line":"rolledback to the saved state and unpaused."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"This spec proposes to implement the first solution, as it is the safer one and"},{"line_number":101,"context_line":"does not imply disrupting the VM\u0027s activity."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"In order to perform live resize, the following criteria must be met:"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_687a58ba","line":101,"range":{"start_line":101,"start_character":0,"end_line":101,"end_character":44},"in_reply_to":"df7087c5_68449847","updated":"2018-03-15 14:42:50.000000000","message":"Indeed. I guess I can mention this as well.","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6bef6f6061b20568b86d8d8a9a42d9fc05d7a07","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":106,"context_line":"  upsizing."},{"line_number":107,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":108,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":109,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":110,"context_line":"  memory resize)."},{"line_number":111,"context_line":"  e.g.: ``os_live_resize\u003ddisk,memory,vcpu``"},{"line_number":112,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":113,"context_line":"  created with boot from volume."},{"line_number":114,"context_line":"* The target flavor for live resize might have a larger amount of memory or"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_e8a6680f","line":111,"range":{"start_line":107,"start_character":0,"end_line":111,"end_character":43},"updated":"2018-03-15 14:11:28.000000000","message":"This is because it requires guest OS support, I assume?","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c6643e9742f52ae4788727a54e99236086a453e4","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":106,"context_line":"  upsizing."},{"line_number":107,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":108,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":109,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":110,"context_line":"  memory resize)."},{"line_number":111,"context_line":"  e.g.: ``os_live_resize\u003ddisk,memory,vcpu``"},{"line_number":112,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":113,"context_line":"  created with boot from volume."},{"line_number":114,"context_line":"* The target flavor for live resize might have a larger amount of memory or"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_4858b454","line":111,"range":{"start_line":107,"start_character":0,"end_line":111,"end_character":43},"in_reply_to":"df7087c5_e8a6680f","updated":"2018-03-15 14:42:50.000000000","message":"It does, the paragraph mentions this: \"This is required, as not all guests support live resize\"","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6bef6f6061b20568b86d8d8a9a42d9fc05d7a07","unresolved":false,"context_lines":[{"line_number":124,"context_line":"  allowed for that resource type. The new flavor must not have greater values"},{"line_number":125,"context_line":"  than the limits set by these flavor extra specs."},{"line_number":126,"context_line":"* Instances using NUMA topologies must have been created or cold resized with"},{"line_number":127,"context_line":"  a flavor containing the extra specs ``os:max_memory:N`` and"},{"line_number":128,"context_line":"  ``os:max_vcpus:N`` for every NUMA node N. This will allow the memory and"},{"line_number":129,"context_line":"  number of vCPUs to be live resized up to that value in those NUMA cells."},{"line_number":130,"context_line":"  Alternatively, for symmetric NUMA topologies, the default values for these"},{"line_number":131,"context_line":"  extra specs will be `` os:max_memory / N`` and ``os:max_vcpus / N``, where"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_6867b8b8","line":128,"range":{"start_line":127,"start_character":26,"end_line":128,"end_character":43},"updated":"2018-03-15 14:11:28.000000000","message":"AFAIK, you can\u0027t define the same extra_spec multiple times. That being the case, what do you propose is the format for a per-node extra spec? Something like ``os:max_memory.0\u003dN``?\n\nI\u0027m also unsure if there\u0027s a need for this. As things stand, we compare the number of vCPUs/memory specified for each NUMA node to the total amount allocated for the instance. Can\u0027t we continue relying on this check?","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c6643e9742f52ae4788727a54e99236086a453e4","unresolved":false,"context_lines":[{"line_number":124,"context_line":"  allowed for that resource type. The new flavor must not have greater values"},{"line_number":125,"context_line":"  than the limits set by these flavor extra specs."},{"line_number":126,"context_line":"* Instances using NUMA topologies must have been created or cold resized with"},{"line_number":127,"context_line":"  a flavor containing the extra specs ``os:max_memory:N`` and"},{"line_number":128,"context_line":"  ``os:max_vcpus:N`` for every NUMA node N. This will allow the memory and"},{"line_number":129,"context_line":"  number of vCPUs to be live resized up to that value in those NUMA cells."},{"line_number":130,"context_line":"  Alternatively, for symmetric NUMA topologies, the default values for these"},{"line_number":131,"context_line":"  extra specs will be `` os:max_memory / N`` and ``os:max_vcpus / N``, where"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_eb42e20e","line":128,"range":{"start_line":127,"start_character":26,"end_line":128,"end_character":43},"in_reply_to":"df7087c5_6867b8b8","updated":"2018-03-15 14:42:50.000000000","message":"Yeah, I think it should be os:max_memory.N instead of os:max_memory:N. I was thinking of the same way assymetric NUMA topologies are defined in flavor extra_specs. They\u0027re basically defined in the same way. We can probably reuse the same code.\n\nI\u0027m not sure I understand your last question though. Anyways, you would have to specify os:max_memory.N and os:max_vcpus.N only for asymmetric NUMA topologies (you\u0027re basically saying how big can a NUMA cell get). Or do you want us to consider os:max_memory.N to have the same value as os:max_memory?","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6bef6f6061b20568b86d8d8a9a42d9fc05d7a07","unresolved":false,"context_lines":[{"line_number":131,"context_line":"  extra specs will be `` os:max_memory / N`` and ``os:max_vcpus / N``, where"},{"line_number":132,"context_line":"  N is the number of NUMA nodes in the instance\u0027s topology."},{"line_number":133,"context_line":"* If original flavor has a NUMA topology defined, the target flavor must have"},{"line_number":134,"context_line":"  the same number of NUMA nodes."},{"line_number":135,"context_line":"* If the instance uses huge pages, the target flavor\u0027s ``hw:mem_page_size``"},{"line_number":136,"context_line":"  extra_spec must be a multiple of the original flavor\u0027s value."},{"line_number":137,"context_line":"* If the original flavor uses dedicated CPUs, the target flavor must use"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_e810a802","line":134,"range":{"start_line":134,"start_character":2,"end_line":134,"end_character":32},"updated":"2018-03-15 14:11:28.000000000","message":"Why? Is this a limitation of the hypervisor or OS?","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"b6165b8aa803c785bd98bab618c2cd35bc698a21","unresolved":false,"context_lines":[{"line_number":131,"context_line":"  extra specs will be `` os:max_memory / N`` and ``os:max_vcpus / N``, where"},{"line_number":132,"context_line":"  N is the number of NUMA nodes in the instance\u0027s topology."},{"line_number":133,"context_line":"* If original flavor has a NUMA topology defined, the target flavor must have"},{"line_number":134,"context_line":"  the same number of NUMA nodes."},{"line_number":135,"context_line":"* If the instance uses huge pages, the target flavor\u0027s ``hw:mem_page_size``"},{"line_number":136,"context_line":"  extra_spec must be a multiple of the original flavor\u0027s value."},{"line_number":137,"context_line":"* If the original flavor uses dedicated CPUs, the target flavor must use"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_b95e5f10","line":134,"range":{"start_line":134,"start_character":2,"end_line":134,"end_character":32},"in_reply_to":"df7087c5_0bbb96c4","updated":"2018-03-16 19:09:05.000000000","message":"It\u0027s conceivable that this would be a per-hypervisor limitation.  I do not think that qemu supports hotplugging a new NUMA node.  You have to define the full possible set of vCPUs at qemu process startup, as well as which vCPUs are initially online.","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c6643e9742f52ae4788727a54e99236086a453e4","unresolved":false,"context_lines":[{"line_number":131,"context_line":"  extra specs will be `` os:max_memory / N`` and ``os:max_vcpus / N``, where"},{"line_number":132,"context_line":"  N is the number of NUMA nodes in the instance\u0027s topology."},{"line_number":133,"context_line":"* If original flavor has a NUMA topology defined, the target flavor must have"},{"line_number":134,"context_line":"  the same number of NUMA nodes."},{"line_number":135,"context_line":"* If the instance uses huge pages, the target flavor\u0027s ``hw:mem_page_size``"},{"line_number":136,"context_line":"  extra_spec must be a multiple of the original flavor\u0027s value."},{"line_number":137,"context_line":"* If the original flavor uses dedicated CPUs, the target flavor must use"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_0bbb96c4","line":134,"range":{"start_line":134,"start_character":2,"end_line":134,"end_character":32},"in_reply_to":"df7087c5_e810a802","updated":"2018-03-15 14:42:50.000000000","message":"Added this as suggested by Chris Friesen and Daniel Berrange in PS27:\n\n    As mentioned earlier by Daniel Berrange, this is not\n    sufficient. If you have a multi-numa-node guest you\n    need to specify CPU/RAM max values per numa node. (And\n    you might need to ensure that the new flavor has the \n    same number of NUMA nodes as the old.) Similarly, if \n    you use hugepages then you need to ensure that the size \n    in the new flavor is a multiple of the original \n    pagesize. Finally, for dedicated CPUs we\u0027d need to \n    ensure that the new flavor also uses dedicated CPUs.","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6bef6f6061b20568b86d8d8a9a42d9fc05d7a07","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  N is the number of NUMA nodes in the instance\u0027s topology."},{"line_number":133,"context_line":"* If original flavor has a NUMA topology defined, the target flavor must have"},{"line_number":134,"context_line":"  the same number of NUMA nodes."},{"line_number":135,"context_line":"* If the instance uses huge pages, the target flavor\u0027s ``hw:mem_page_size``"},{"line_number":136,"context_line":"  extra_spec must be a multiple of the original flavor\u0027s value."},{"line_number":137,"context_line":"* If the original flavor uses dedicated CPUs, the target flavor must use"},{"line_number":138,"context_line":"  dedicated CPUs as well."},{"line_number":139,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_a8f630d6","line":136,"range":{"start_line":135,"start_character":0,"end_line":136,"end_character":63},"updated":"2018-03-15 14:11:28.000000000","message":"Again, why?","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"b6165b8aa803c785bd98bab618c2cd35bc698a21","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  N is the number of NUMA nodes in the instance\u0027s topology."},{"line_number":133,"context_line":"* If original flavor has a NUMA topology defined, the target flavor must have"},{"line_number":134,"context_line":"  the same number of NUMA nodes."},{"line_number":135,"context_line":"* If the instance uses huge pages, the target flavor\u0027s ``hw:mem_page_size``"},{"line_number":136,"context_line":"  extra_spec must be a multiple of the original flavor\u0027s value."},{"line_number":137,"context_line":"* If the original flavor uses dedicated CPUs, the target flavor must use"},{"line_number":138,"context_line":"  dedicated CPUs as well."},{"line_number":139,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_494f326a","line":136,"range":{"start_line":135,"start_character":0,"end_line":136,"end_character":63},"in_reply_to":"df7087c5_a8f630d6","updated":"2018-03-16 19:09:05.000000000","message":"I don\u0027t know about other hypervisors, but while qemu supports hotplugging memory of a different page size onto a running VM instance (which is cool), I don\u0027t think it supports *replacing* the memory of a running VM instance with memory of a different pagesize.\n\nSince nova only understands guests where all the memory is the same page size, for qemu at least we need to ensure we preserve the pagesize over the hot-resize.","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c6643e9742f52ae4788727a54e99236086a453e4","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  N is the number of NUMA nodes in the instance\u0027s topology."},{"line_number":133,"context_line":"* If original flavor has a NUMA topology defined, the target flavor must have"},{"line_number":134,"context_line":"  the same number of NUMA nodes."},{"line_number":135,"context_line":"* If the instance uses huge pages, the target flavor\u0027s ``hw:mem_page_size``"},{"line_number":136,"context_line":"  extra_spec must be a multiple of the original flavor\u0027s value."},{"line_number":137,"context_line":"* If the original flavor uses dedicated CPUs, the target flavor must use"},{"line_number":138,"context_line":"  dedicated CPUs as well."},{"line_number":139,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_2be3fada","line":136,"range":{"start_line":135,"start_character":0,"end_line":136,"end_character":63},"in_reply_to":"df7087c5_a8f630d6","updated":"2018-03-15 14:42:50.000000000","message":"ditto.","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6bef6f6061b20568b86d8d8a9a42d9fc05d7a07","unresolved":false,"context_lines":[{"line_number":134,"context_line":"  the same number of NUMA nodes."},{"line_number":135,"context_line":"* If the instance uses huge pages, the target flavor\u0027s ``hw:mem_page_size``"},{"line_number":136,"context_line":"  extra_spec must be a multiple of the original flavor\u0027s value."},{"line_number":137,"context_line":"* If the original flavor uses dedicated CPUs, the target flavor must use"},{"line_number":138,"context_line":"  dedicated CPUs as well."},{"line_number":139,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":140,"context_line":"  enabled in image metadata."},{"line_number":141,"context_line":"* In order for the nova live-resize API call to be accepted, it must be enabled"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_c8260469","line":138,"range":{"start_line":137,"start_character":0,"end_line":138,"end_character":25},"updated":"2018-03-15 14:11:28.000000000","message":"and vice versa?","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"b6165b8aa803c785bd98bab618c2cd35bc698a21","unresolved":false,"context_lines":[{"line_number":134,"context_line":"  the same number of NUMA nodes."},{"line_number":135,"context_line":"* If the instance uses huge pages, the target flavor\u0027s ``hw:mem_page_size``"},{"line_number":136,"context_line":"  extra_spec must be a multiple of the original flavor\u0027s value."},{"line_number":137,"context_line":"* If the original flavor uses dedicated CPUs, the target flavor must use"},{"line_number":138,"context_line":"  dedicated CPUs as well."},{"line_number":139,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":140,"context_line":"  enabled in image metadata."},{"line_number":141,"context_line":"* In order for the nova live-resize API call to be accepted, it must be enabled"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_4978928e","line":138,"range":{"start_line":137,"start_character":0,"end_line":138,"end_character":25},"in_reply_to":"df7087c5_c8260469","updated":"2018-03-16 19:09:05.000000000","message":"This one I\u0027m actually not sure about.  I think libvirt/qemu *could* support switching a running vCPU from \"shared\" to \"dedicated\" since it\u0027s really just the equivalent of a \"virsh vcpupin\" call.  But if the resize resulted in the new instance no longer having a numa_topology things could get interesting as far as how to handle the NUMA-affinity for the memory.","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c6643e9742f52ae4788727a54e99236086a453e4","unresolved":false,"context_lines":[{"line_number":134,"context_line":"  the same number of NUMA nodes."},{"line_number":135,"context_line":"* If the instance uses huge pages, the target flavor\u0027s ``hw:mem_page_size``"},{"line_number":136,"context_line":"  extra_spec must be a multiple of the original flavor\u0027s value."},{"line_number":137,"context_line":"* If the original flavor uses dedicated CPUs, the target flavor must use"},{"line_number":138,"context_line":"  dedicated CPUs as well."},{"line_number":139,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":140,"context_line":"  enabled in image metadata."},{"line_number":141,"context_line":"* In order for the nova live-resize API call to be accepted, it must be enabled"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_cbe59edd","line":138,"range":{"start_line":137,"start_character":0,"end_line":138,"end_character":25},"in_reply_to":"df7087c5_c8260469","updated":"2018-03-15 14:42:50.000000000","message":"ditto.","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6bef6f6061b20568b86d8d8a9a42d9fc05d7a07","unresolved":false,"context_lines":[{"line_number":145,"context_line":"  See `REST API impact` section."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"python-openstackclient:"},{"line_number":148,"context_line":"  Live resize feature will be used as such:"},{"line_number":149,"context_line":"    openstack server resize [--flavor \u003cflavor\u003e --live | --confirm | --revert]"},{"line_number":150,"context_line":"                            [--wait] \u003cserver\u003e"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_e8de683c","line":148,"range":{"start_line":148,"start_character":42,"end_line":148,"end_character":43},"updated":"2018-03-15 14:11:28.000000000","message":"nit: Maybe add another \u0027:\u0027 and a newline after this line, so the below renders as code","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c6643e9742f52ae4788727a54e99236086a453e4","unresolved":false,"context_lines":[{"line_number":145,"context_line":"  See `REST API impact` section."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"python-openstackclient:"},{"line_number":148,"context_line":"  Live resize feature will be used as such:"},{"line_number":149,"context_line":"    openstack server resize [--flavor \u003cflavor\u003e --live | --confirm | --revert]"},{"line_number":150,"context_line":"                            [--wait] \u003cserver\u003e"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_ebe8a2b3","line":148,"range":{"start_line":148,"start_character":42,"end_line":148,"end_character":43},"in_reply_to":"df7087c5_e8de683c","updated":"2018-03-15 14:42:50.000000000","message":"Done","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6bef6f6061b20568b86d8d8a9a42d9fc05d7a07","unresolved":false,"context_lines":[{"line_number":209,"context_line":"for live-resize."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"In order to use this feature, users will have have to make this request to the"},{"line_number":212,"context_line":"nova API:"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"  `POST /servers/\u003cid\u003e/action`"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_28c2205a","line":212,"range":{"start_line":212,"start_character":8,"end_line":212,"end_character":9},"updated":"2018-03-15 14:11:28.000000000","message":"::","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c6643e9742f52ae4788727a54e99236086a453e4","unresolved":false,"context_lines":[{"line_number":209,"context_line":"for live-resize."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"In order to use this feature, users will have have to make this request to the"},{"line_number":212,"context_line":"nova API:"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"  `POST /servers/\u003cid\u003e/action`"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_8bd32604","line":212,"range":{"start_line":212,"start_character":8,"end_line":212,"end_character":9},"in_reply_to":"df7087c5_28c2205a","updated":"2018-03-15 14:42:50.000000000","message":"Done","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6bef6f6061b20568b86d8d8a9a42d9fc05d7a07","unresolved":false,"context_lines":[{"line_number":211,"context_line":"In order to use this feature, users will have have to make this request to the"},{"line_number":212,"context_line":"nova API:"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"  `POST /servers/\u003cid\u003e/action`"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Body::"},{"line_number":217,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_48c8b472","line":214,"range":{"start_line":214,"start_character":28,"end_line":214,"end_character":29},"updated":"2018-03-15 14:11:28.000000000","message":"You can probably drop these","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c6643e9742f52ae4788727a54e99236086a453e4","unresolved":false,"context_lines":[{"line_number":211,"context_line":"In order to use this feature, users will have have to make this request to the"},{"line_number":212,"context_line":"nova API:"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"  `POST /servers/\u003cid\u003e/action`"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Body::"},{"line_number":217,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_6bd492e9","line":214,"range":{"start_line":214,"start_character":28,"end_line":214,"end_character":29},"in_reply_to":"df7087c5_48c8b472","updated":"2018-03-15 14:42:50.000000000","message":"Done","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6bef6f6061b20568b86d8d8a9a42d9fc05d7a07","unresolved":false,"context_lines":[{"line_number":221,"context_line":"    }"},{"line_number":222,"context_line":"  }"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"If live resize is not applicable because of the restrictions defined in the"},{"line_number":225,"context_line":"above, an exception will be raised and a HTTP response with status code 400"},{"line_number":226,"context_line":"(Bad Request) will be returned. Otherwise, an HTTP response with status code"},{"line_number":227,"context_line":"202 (Accepted) will be returned."}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_28a780bf","line":224,"range":{"start_line":224,"start_character":68,"end_line":224,"end_character":75},"updated":"2018-03-15 14:11:28.000000000","message":"drop these","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c6643e9742f52ae4788727a54e99236086a453e4","unresolved":false,"context_lines":[{"line_number":221,"context_line":"    }"},{"line_number":222,"context_line":"  }"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"If live resize is not applicable because of the restrictions defined in the"},{"line_number":225,"context_line":"above, an exception will be raised and a HTTP response with status code 400"},{"line_number":226,"context_line":"(Bad Request) will be returned. Otherwise, an HTTP response with status code"},{"line_number":227,"context_line":"202 (Accepted) will be returned."}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_2b0c5aa3","line":224,"range":{"start_line":224,"start_character":68,"end_line":224,"end_character":75},"in_reply_to":"df7087c5_28a780bf","updated":"2018-03-15 14:42:50.000000000","message":"Done","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6bef6f6061b20568b86d8d8a9a42d9fc05d7a07","unresolved":false,"context_lines":[{"line_number":223,"context_line":""},{"line_number":224,"context_line":"If live resize is not applicable because of the restrictions defined in the"},{"line_number":225,"context_line":"above, an exception will be raised and a HTTP response with status code 400"},{"line_number":226,"context_line":"(Bad Request) will be returned. Otherwise, an HTTP response with status code"},{"line_number":227,"context_line":"202 (Accepted) will be returned."},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_c8a92490","line":226,"range":{"start_line":226,"start_character":43,"end_line":226,"end_character":45},"updated":"2018-03-15 14:11:28.000000000","message":"a","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c6643e9742f52ae4788727a54e99236086a453e4","unresolved":false,"context_lines":[{"line_number":223,"context_line":""},{"line_number":224,"context_line":"If live resize is not applicable because of the restrictions defined in the"},{"line_number":225,"context_line":"above, an exception will be raised and a HTTP response with status code 400"},{"line_number":226,"context_line":"(Bad Request) will be returned. Otherwise, an HTTP response with status code"},{"line_number":227,"context_line":"202 (Accepted) will be returned."},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_cbfefe69","line":226,"range":{"start_line":226,"start_character":43,"end_line":226,"end_character":45},"in_reply_to":"df7087c5_c8a92490","updated":"2018-03-15 14:42:50.000000000","message":"Done","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6bef6f6061b20568b86d8d8a9a42d9fc05d7a07","unresolved":false,"context_lines":[{"line_number":246,"context_line":"---------------------"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"The guest OS must have a mechanism to detect when the disk size changes in"},{"line_number":249,"context_line":"order to do a `growroot` style operation. At the moment, cloud-init and"},{"line_number":250,"context_line":"cloudbase-init performs this check on boot."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_e8ac28a0","line":249,"range":{"start_line":249,"start_character":15,"end_line":249,"end_character":23},"updated":"2018-03-15 14:11:28.000000000","message":"``growroot``","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c6643e9742f52ae4788727a54e99236086a453e4","unresolved":false,"context_lines":[{"line_number":246,"context_line":"---------------------"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"The guest OS must have a mechanism to detect when the disk size changes in"},{"line_number":249,"context_line":"order to do a `growroot` style operation. At the moment, cloud-init and"},{"line_number":250,"context_line":"cloudbase-init performs this check on boot."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_8bfc8670","line":249,"range":{"start_line":249,"start_character":15,"end_line":249,"end_character":23},"in_reply_to":"df7087c5_e8ac28a0","updated":"2018-03-15 14:42:50.000000000","message":"Done","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6bef6f6061b20568b86d8d8a9a42d9fc05d7a07","unresolved":false,"context_lines":[{"line_number":334,"context_line":""},{"line_number":335,"context_line":"**Hyper-V**:"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":".. [1a] `Resizing virtual hard disks while the VM is running`__"},{"line_number":338,"context_line":"__ https://technet.microsoft.com/en-us/library/dn282278.aspx#bkmk_resize"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":".. [1b] `Online virtual hard disk resizing benefits and requirements`__"},{"line_number":341,"context_line":"__ https://technet.microsoft.com/en-us/library/dn282286.aspx"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_48767440","line":338,"range":{"start_line":337,"start_character":0,"end_line":338,"end_character":72},"updated":"2018-03-15 14:11:28.000000000","message":"Something funky is going on with how these are rendered. Maybe just squeeze them all onto the same line?","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"c6643e9742f52ae4788727a54e99236086a453e4","unresolved":false,"context_lines":[{"line_number":334,"context_line":""},{"line_number":335,"context_line":"**Hyper-V**:"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":".. [1a] `Resizing virtual hard disks while the VM is running`__"},{"line_number":338,"context_line":"__ https://technet.microsoft.com/en-us/library/dn282278.aspx#bkmk_resize"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":".. [1b] `Online virtual hard disk resizing benefits and requirements`__"},{"line_number":341,"context_line":"__ https://technet.microsoft.com/en-us/library/dn282286.aspx"}],"source_content_type":"text/x-rst","patch_set":31,"id":"df7087c5_abf70a8b","line":338,"range":{"start_line":337,"start_character":0,"end_line":338,"end_character":72},"in_reply_to":"df7087c5_48767440","updated":"2018-03-15 14:42:50.000000000","message":"what exactly is funky? They look fine to me.","commit_id":"0f8b27d9add02edddf54b4524db9aa0b506ff6b8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c64f1a3e0f87c115b7e355120fc7341577a179c0","unresolved":false,"context_lines":[{"line_number":107,"context_line":"rollback through live-downsize is not supported by all hypervisors and guests"},{"line_number":108,"context_line":"and it can fail. In order to address this concern, there are two solutions:"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  1. Only allow live resize to flavors having only one resource different"},{"line_number":111,"context_line":"  (e.g.: target flavor has the same amount of memory and vCPUs, but more disk)."},{"line_number":112,"context_line":"  This will allow us to live resize one resource at a time, and if the"},{"line_number":113,"context_line":"  operation fails, the resource will maintain its old value."}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_8e55dd52","line":110,"range":{"start_line":110,"start_character":46,"end_line":110,"end_character":73},"updated":"2018-03-22 00:04:02.000000000","message":"ick, skittles","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9e4f21162e89a2906bbd7e31e60357c89cc5414f","unresolved":false,"context_lines":[{"line_number":107,"context_line":"rollback through live-downsize is not supported by all hypervisors and guests"},{"line_number":108,"context_line":"and it can fail. In order to address this concern, there are two solutions:"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  1. Only allow live resize to flavors having only one resource different"},{"line_number":111,"context_line":"  (e.g.: target flavor has the same amount of memory and vCPUs, but more disk)."},{"line_number":112,"context_line":"  This will allow us to live resize one resource at a time, and if the"},{"line_number":113,"context_line":"  operation fails, the resource will maintain its old value."}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_83228b00","line":110,"range":{"start_line":110,"start_character":46,"end_line":110,"end_character":73},"in_reply_to":"df7087c5_8e55dd52","updated":"2018-03-22 10:53:31.000000000","message":"it\u0027s a compromise, IMO. And generally you won\u0027t need *that* many flavors to upsize your instance. There are only 3 primary resources (memory, disk, cpu) which will be resized most of the time, and not necessarely all at the same time.\n\nAlso, some resources can be / will have to be grouped, for example memory and NUMA topology memory / vcpus and NUMA topology cpus.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c64f1a3e0f87c115b7e355120fc7341577a179c0","unresolved":false,"context_lines":[{"line_number":113,"context_line":"  operation fails, the resource will maintain its old value."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"  2. Save the VM state before live resize. This means that the VM will be"},{"line_number":116,"context_line":"  paused (in order to prevent data loss during rollback) and its state will be"},{"line_number":117,"context_line":"  saved as a snapshot. After the live resize succeeded, the VM will be unpaused"},{"line_number":118,"context_line":"  and the saved state removed. Due to this, the VM activity will be disrupted"},{"line_number":119,"context_line":"  for just a few seconds. If the live resize fails, the instance can be safely"}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_ee5ed974","line":116,"range":{"start_line":116,"start_character":2,"end_line":116,"end_character":8},"updated":"2018-03-22 00:04:02.000000000","message":"boo; I thought we hated pause.  Anyway, I know some virts don\u0027t support it.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9e4f21162e89a2906bbd7e31e60357c89cc5414f","unresolved":false,"context_lines":[{"line_number":113,"context_line":"  operation fails, the resource will maintain its old value."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"  2. Save the VM state before live resize. This means that the VM will be"},{"line_number":116,"context_line":"  paused (in order to prevent data loss during rollback) and its state will be"},{"line_number":117,"context_line":"  saved as a snapshot. After the live resize succeeded, the VM will be unpaused"},{"line_number":118,"context_line":"  and the saved state removed. Due to this, the VM activity will be disrupted"},{"line_number":119,"context_line":"  for just a few seconds. If the live resize fails, the instance can be safely"}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_431c73c0","line":116,"range":{"start_line":116,"start_character":2,"end_line":116,"end_character":8},"in_reply_to":"df7087c5_6a6cec35","updated":"2018-03-22 10:53:31.000000000","message":"Agreed. :)","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"19533980143163db597b68ce217012ac18538869","unresolved":false,"context_lines":[{"line_number":113,"context_line":"  operation fails, the resource will maintain its old value."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"  2. Save the VM state before live resize. This means that the VM will be"},{"line_number":116,"context_line":"  paused (in order to prevent data loss during rollback) and its state will be"},{"line_number":117,"context_line":"  saved as a snapshot. After the live resize succeeded, the VM will be unpaused"},{"line_number":118,"context_line":"  and the saved state removed. Due to this, the VM activity will be disrupted"},{"line_number":119,"context_line":"  for just a few seconds. If the live resize fails, the instance can be safely"}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_6a6cec35","line":116,"range":{"start_line":116,"start_character":2,"end_line":116,"end_character":8},"in_reply_to":"df7087c5_ee5ed974","updated":"2018-03-22 08:42:21.000000000","message":"this won\u0027t be the proposed method :)","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c64f1a3e0f87c115b7e355120fc7341577a179c0","unresolved":false,"context_lines":[{"line_number":115,"context_line":"  2. Save the VM state before live resize. This means that the VM will be"},{"line_number":116,"context_line":"  paused (in order to prevent data loss during rollback) and its state will be"},{"line_number":117,"context_line":"  saved as a snapshot. After the live resize succeeded, the VM will be unpaused"},{"line_number":118,"context_line":"  and the saved state removed. Due to this, the VM activity will be disrupted"},{"line_number":119,"context_line":"  for just a few seconds. If the live resize fails, the instance can be safely"},{"line_number":120,"context_line":"  be rolledback to the saved state and unpaused."},{"line_number":121,"context_line":""}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_6e4ac9ac","line":118,"range":{"start_line":118,"start_character":68,"end_line":118,"end_character":77},"updated":"2018-03-22 00:04:02.000000000","message":"Defeats the purpose.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c64f1a3e0f87c115b7e355120fc7341577a179c0","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  and the saved state removed. Due to this, the VM activity will be disrupted"},{"line_number":119,"context_line":"  for just a few seconds. If the live resize fails, the instance can be safely"},{"line_number":120,"context_line":"  be rolledback to the saved state and unpaused."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"This spec proposes to implement the first solution, as it is the safer one to"},{"line_number":123,"context_line":"implement with fewer error cases, and it does not imply disrupting the VM\u0027s"},{"line_number":124,"context_line":"activity."}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_6edf29d6","line":121,"updated":"2018-03-22 00:04:02.000000000","message":"3. Just deal with the fact that we got a partial success.  If we successfully resized *some* of the resources, it doesn\u0027t break anything, does it?  IMO that\u0027s better than trying to restore the previous state and maybe borking things worse.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"df8289813285738815efed627ac8ee96923aa89d","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  and the saved state removed. Due to this, the VM activity will be disrupted"},{"line_number":119,"context_line":"  for just a few seconds. If the live resize fails, the instance can be safely"},{"line_number":120,"context_line":"  be rolledback to the saved state and unpaused."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"This spec proposes to implement the first solution, as it is the safer one to"},{"line_number":123,"context_line":"implement with fewer error cases, and it does not imply disrupting the VM\u0027s"},{"line_number":124,"context_line":"activity."}],"source_content_type":"text/x-rst","patch_set":32,"id":"bf659307_2a73b617","line":121,"in_reply_to":"df7087c5_43df93d5","updated":"2018-03-25 18:49:32.000000000","message":"Grumble grumble.  Okay, I get the compromise.  However, if you\u0027re planning for the one-flavor-one-resource-change rule to be enforced in any way (as opposed to being an advisory for operators) then there needs to be a way to opt out of that enforcement.  Some hypervisors, now or in the future, may allow multi-resource resize as an atomic operation.  (I think PowerVM has this today, not positive.)  I.e. it\u0027s all or nothing, so there\u0027s no need for this rule in that case - which would allow those environments to avoid skittles.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"19533980143163db597b68ce217012ac18538869","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  and the saved state removed. Due to this, the VM activity will be disrupted"},{"line_number":119,"context_line":"  for just a few seconds. If the live resize fails, the instance can be safely"},{"line_number":120,"context_line":"  be rolledback to the saved state and unpaused."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"This spec proposes to implement the first solution, as it is the safer one to"},{"line_number":123,"context_line":"implement with fewer error cases, and it does not imply disrupting the VM\u0027s"},{"line_number":124,"context_line":"activity."}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_8a506060","line":121,"in_reply_to":"df7087c5_6edf29d6","updated":"2018-03-22 08:42:21.000000000","message":"the problem is it\u0027s really hard to billing\nif you have a flavor has 1G memory and 2 vcpu you charge 1$\nand 2G memory and 4 cpu you change 2$\n\nif only resize to 2G and left 2cpu, then how to charge will be a problem","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9e4f21162e89a2906bbd7e31e60357c89cc5414f","unresolved":false,"context_lines":[{"line_number":118,"context_line":"  and the saved state removed. Due to this, the VM activity will be disrupted"},{"line_number":119,"context_line":"  for just a few seconds. If the live resize fails, the instance can be safely"},{"line_number":120,"context_line":"  be rolledback to the saved state and unpaused."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"This spec proposes to implement the first solution, as it is the safer one to"},{"line_number":123,"context_line":"implement with fewer error cases, and it does not imply disrupting the VM\u0027s"},{"line_number":124,"context_line":"activity."}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_43df93d5","line":121,"in_reply_to":"df7087c5_8a506060","updated":"2018-03-22 10:53:31.000000000","message":"Agreed with the billing part.\n\nAlso, you can\u0027t really count a partial success as a success. You wanted some extra resources, you only got part of them.\n\nAdditionally, which flavor will you set as the instance\u0027s flavor? You can\u0027t set it to either. This might become a problem when you\u0027ll have to live-migrate your instance, or live-resize again when it will have to do another resource claim.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c04e63c08b465a53462aa791ff3ff2b9717ebab3","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"This spec proposes to implement the first solution, as it is the safer one to"},{"line_number":123,"context_line":"implement with fewer error cases, and it does not imply disrupting the VM\u0027s"},{"line_number":124,"context_line":"activity."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"In order to perform live resize, the following criteria must be met:"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-rst","patch_set":32,"id":"bf659307_4cc6149d","line":124,"updated":"2018-03-27 12:10:07.000000000","message":"It\u0027s a shame that resize is between flavors rather than simply asking for more stuff (and getting a failure if you can\u0027t have it). It\u0027s also a shame that billing is done on flavors (rather than real values) too.\n\nBut I guess that\u0027s the way the cookie has crumbled.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c64f1a3e0f87c115b7e355120fc7341577a179c0","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":129,"context_line":"  upsizing."},{"line_number":130,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":131,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":132,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":133,"context_line":"  memory resize)."}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_6ef88948","line":130,"range":{"start_line":130,"start_character":6,"end_line":130,"end_character":11},"updated":"2018-03-22 00:04:02.000000000","message":"Why the image?  This seems like a question the virt driver should answer.\n\n def get_live_resizable_resource_classes(self)","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"76a4f9562fece464d7c1b728bbb963efefe9034a","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":129,"context_line":"  upsizing."},{"line_number":130,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":131,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":132,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":133,"context_line":"  memory resize)."}],"source_content_type":"text/x-rst","patch_set":32,"id":"bf659307_45129b5a","line":130,"range":{"start_line":130,"start_character":6,"end_line":130,"end_character":11},"in_reply_to":"bf659307_0af352a0","updated":"2018-03-25 19:07:36.000000000","message":"sure, makes sense.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"df8289813285738815efed627ac8ee96923aa89d","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":129,"context_line":"  upsizing."},{"line_number":130,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":131,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":132,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":133,"context_line":"  memory resize)."}],"source_content_type":"text/x-rst","patch_set":32,"id":"bf659307_0af352a0","line":130,"range":{"start_line":130,"start_character":6,"end_line":130,"end_character":11},"in_reply_to":"df7087c5_03c19be4","updated":"2018-03-25 18:49:32.000000000","message":"Okay, that makes sense.  Please mention it in the text so future me doesn\u0027t have to go back and read comments on PS29 (and now PS32).","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"19533980143163db597b68ce217012ac18538869","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":129,"context_line":"  upsizing."},{"line_number":130,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":131,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":132,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":133,"context_line":"  memory resize)."}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_cad3b8d4","line":130,"range":{"start_line":130,"start_character":6,"end_line":130,"end_character":11},"in_reply_to":"df7087c5_6ef88948","updated":"2018-03-22 08:42:21.000000000","message":"good suggestion","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9e4f21162e89a2906bbd7e31e60357c89cc5414f","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":129,"context_line":"  upsizing."},{"line_number":130,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":131,"context_line":"  contain a list of resizable resources. This is required, as not all guests"},{"line_number":132,"context_line":"  support live resize (or they support it only partly, for example, only live"},{"line_number":133,"context_line":"  memory resize)."}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_03c19be4","line":130,"range":{"start_line":130,"start_character":6,"end_line":130,"end_character":11},"in_reply_to":"df7087c5_cad3b8d4","updated":"2018-03-22 10:53:31.000000000","message":"This was asked on PS 29, but I\u0027m going to repeat this again:\n\nNot all guest OSes support all types of live resizes. AFAIK, Windows guests don\u0027t support CPU live-resize (might be wrong, haven\u0027t checked newer versions of Windows, but older OSes, they probably don\u0027t), which is why we need the os_live_resize image property.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c64f1a3e0f87c115b7e355120fc7341577a179c0","unresolved":false,"context_lines":[{"line_number":141,"context_line":"* If target flavor have any different extra specs, it is up to virt driver to"},{"line_number":142,"context_line":"  decide whether it\u0027s allowed or not."},{"line_number":143,"context_line":"* The instance must have been created or cold resized with a flavor containing"},{"line_number":144,"context_line":"  the following extra specs: ``os:max_memory``, ``os:max_vcpus``,"},{"line_number":145,"context_line":"  ``os:max_disk``. These specs will set the upper limits for live resize."},{"line_number":146,"context_line":"  Without having an upper limit for a resource type, live resize will not be"},{"line_number":147,"context_line":"  allowed for that resource type. The new flavor must not have greater values"}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_eeba596c","line":144,"range":{"start_line":144,"start_character":31,"end_line":144,"end_character":34},"updated":"2018-03-22 00:04:02.000000000","message":"sorry, what\u0027s with the \u0027os:\u0027 prefix?","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9e4f21162e89a2906bbd7e31e60357c89cc5414f","unresolved":false,"context_lines":[{"line_number":141,"context_line":"* If target flavor have any different extra specs, it is up to virt driver to"},{"line_number":142,"context_line":"  decide whether it\u0027s allowed or not."},{"line_number":143,"context_line":"* The instance must have been created or cold resized with a flavor containing"},{"line_number":144,"context_line":"  the following extra specs: ``os:max_memory``, ``os:max_vcpus``,"},{"line_number":145,"context_line":"  ``os:max_disk``. These specs will set the upper limits for live resize."},{"line_number":146,"context_line":"  Without having an upper limit for a resource type, live resize will not be"},{"line_number":147,"context_line":"  allowed for that resource type. The new flavor must not have greater values"}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_637657db","line":144,"range":{"start_line":144,"start_character":31,"end_line":144,"end_character":34},"in_reply_to":"df7087c5_2aab541d","updated":"2018-03-22 10:53:31.000000000","message":"yep. I\u0027m addopting the same naming convention as for image metadata properties: [1]\n\nThere are all sorts of flavor extra specs with those prefixes.\n\n[1] https://github.com/openstack/nova/blob/master/nova/objects/image_meta.py#L223","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"19533980143163db597b68ce217012ac18538869","unresolved":false,"context_lines":[{"line_number":141,"context_line":"* If target flavor have any different extra specs, it is up to virt driver to"},{"line_number":142,"context_line":"  decide whether it\u0027s allowed or not."},{"line_number":143,"context_line":"* The instance must have been created or cold resized with a flavor containing"},{"line_number":144,"context_line":"  the following extra specs: ``os:max_memory``, ``os:max_vcpus``,"},{"line_number":145,"context_line":"  ``os:max_disk``. These specs will set the upper limits for live resize."},{"line_number":146,"context_line":"  Without having an upper limit for a resource type, live resize will not be"},{"line_number":147,"context_line":"  allowed for that resource type. The new flavor must not have greater values"}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_2aab541d","line":144,"range":{"start_line":144,"start_character":31,"end_line":144,"end_character":34},"in_reply_to":"df7087c5_eeba596c","updated":"2018-03-22 08:42:21.000000000","message":"operating system?","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c64f1a3e0f87c115b7e355120fc7341577a179c0","unresolved":false,"context_lines":[{"line_number":142,"context_line":"  decide whether it\u0027s allowed or not."},{"line_number":143,"context_line":"* The instance must have been created or cold resized with a flavor containing"},{"line_number":144,"context_line":"  the following extra specs: ``os:max_memory``, ``os:max_vcpus``,"},{"line_number":145,"context_line":"  ``os:max_disk``. These specs will set the upper limits for live resize."},{"line_number":146,"context_line":"  Without having an upper limit for a resource type, live resize will not be"},{"line_number":147,"context_line":"  allowed for that resource type. The new flavor must not have greater values"},{"line_number":148,"context_line":"  than the limits set by these flavor extra specs."}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_ae8301a9","line":145,"range":{"start_line":145,"start_character":19,"end_line":145,"end_character":73},"updated":"2018-03-22 00:04:02.000000000","message":"Need a way to opt out of these maxes (effectively say \"unlimited\" or \"don\u0027t babysit me - I\u0027ll figure it out\").\n\nAlso, rather than doing this in the flavor, the above suggested virt driver method could return the maxes for the resources it supports.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"df21d5ba4ca51cb1eba5fd412ed2ed52089e2c4d","unresolved":false,"context_lines":[{"line_number":142,"context_line":"  decide whether it\u0027s allowed or not."},{"line_number":143,"context_line":"* The instance must have been created or cold resized with a flavor containing"},{"line_number":144,"context_line":"  the following extra specs: ``os:max_memory``, ``os:max_vcpus``,"},{"line_number":145,"context_line":"  ``os:max_disk``. These specs will set the upper limits for live resize."},{"line_number":146,"context_line":"  Without having an upper limit for a resource type, live resize will not be"},{"line_number":147,"context_line":"  allowed for that resource type. The new flavor must not have greater values"},{"line_number":148,"context_line":"  than the limits set by these flavor extra specs."}],"source_content_type":"text/x-rst","patch_set":32,"id":"bf659307_9074dd37","line":145,"range":{"start_line":145,"start_character":19,"end_line":145,"end_character":73},"in_reply_to":"bf659307_3502a370","updated":"2018-03-30 14:18:13.000000000","message":"okay.  I guess if I really need it, I can set an arbitrarily large number until that\u0027s supported.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"e98a146d6bbdd0b2fee04116ec41f79280982d23","unresolved":false,"context_lines":[{"line_number":142,"context_line":"  decide whether it\u0027s allowed or not."},{"line_number":143,"context_line":"* The instance must have been created or cold resized with a flavor containing"},{"line_number":144,"context_line":"  the following extra specs: ``os:max_memory``, ``os:max_vcpus``,"},{"line_number":145,"context_line":"  ``os:max_disk``. These specs will set the upper limits for live resize."},{"line_number":146,"context_line":"  Without having an upper limit for a resource type, live resize will not be"},{"line_number":147,"context_line":"  allowed for that resource type. The new flavor must not have greater values"},{"line_number":148,"context_line":"  than the limits set by these flavor extra specs."}],"source_content_type":"text/x-rst","patch_set":32,"id":"bf659307_3502a370","line":145,"range":{"start_line":145,"start_character":19,"end_line":145,"end_character":73},"in_reply_to":"df7087c5_a33a2fe4","updated":"2018-03-30 13:23:19.000000000","message":"Apart from libvirt, it would make it easier to use for the other drivers, but I\u0027m not sure the nova core would accept the \"unlimited\" part. TBH, I\u0027d like to have the \"unlimited\" bit too.\n\nAs far as implementation goes, I\u0027d say we could have those limits imposed in the first iteration, and we could decide later on if the \"unlimited\" part is Ok. From the usability standpoint, it would be a backwards compatible change, since we would only relax the operation\u0027s preconditions.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9e4f21162e89a2906bbd7e31e60357c89cc5414f","unresolved":false,"context_lines":[{"line_number":142,"context_line":"  decide whether it\u0027s allowed or not."},{"line_number":143,"context_line":"* The instance must have been created or cold resized with a flavor containing"},{"line_number":144,"context_line":"  the following extra specs: ``os:max_memory``, ``os:max_vcpus``,"},{"line_number":145,"context_line":"  ``os:max_disk``. These specs will set the upper limits for live resize."},{"line_number":146,"context_line":"  Without having an upper limit for a resource type, live resize will not be"},{"line_number":147,"context_line":"  allowed for that resource type. The new flavor must not have greater values"},{"line_number":148,"context_line":"  than the limits set by these flavor extra specs."}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_a33a2fe4","line":145,"range":{"start_line":145,"start_character":19,"end_line":145,"end_character":73},"in_reply_to":"df7087c5_ae8301a9","updated":"2018-03-22 10:53:31.000000000","message":"I agree, and this wasn\u0027t part of the original spec, but libvirt does require this. Libvirt will have to set those values in the instance\u0027s XML before being able to live-resize those particular resources. Something like this isn\u0027t required for Hyper-V, or AFAIK, any other hypervisor.\n\nAs for the second part, that could be done by asking the scheduler: will the instance\u0027s new flavor fit on the host?","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c64f1a3e0f87c115b7e355120fc7341577a179c0","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"  * ``check_instance_live_resize``: will be called through RPC by the API."},{"line_number":194,"context_line":"    It will check whether the hypervisor is able to perform this feature by"},{"line_number":195,"context_line":"    checking its capabilities and will call the virt driver to ask the"},{"line_number":196,"context_line":"    instance\u0027s hypervisor if live resizing it to the target flavor is supported"},{"line_number":197,"context_line":"    or not."},{"line_number":198,"context_line":"  * ``live_resize_instance``: will be called through RPC by the conductor."}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_ee481988","line":195,"range":{"start_line":195,"start_character":39,"end_line":195,"end_character":59},"updated":"2018-03-22 00:04:02.000000000","message":"So yeah, why not just let this do all the checking?  Pass in the new flavor and let this bail if it can\u0027t handle the change.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"df21d5ba4ca51cb1eba5fd412ed2ed52089e2c4d","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"  * ``check_instance_live_resize``: will be called through RPC by the API."},{"line_number":194,"context_line":"    It will check whether the hypervisor is able to perform this feature by"},{"line_number":195,"context_line":"    checking its capabilities and will call the virt driver to ask the"},{"line_number":196,"context_line":"    instance\u0027s hypervisor if live resizing it to the target flavor is supported"},{"line_number":197,"context_line":"    or not."},{"line_number":198,"context_line":"  * ``live_resize_instance``: will be called through RPC by the conductor."}],"source_content_type":"text/x-rst","patch_set":32,"id":"bf659307_70958932","line":195,"range":{"start_line":195,"start_character":39,"end_line":195,"end_character":59},"in_reply_to":"df7087c5_7e3b4ec7","updated":"2018-03-30 14:18:13.000000000","message":"Yup, thanks for the explanation, I get it now.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9e4f21162e89a2906bbd7e31e60357c89cc5414f","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"  * ``check_instance_live_resize``: will be called through RPC by the API."},{"line_number":194,"context_line":"    It will check whether the hypervisor is able to perform this feature by"},{"line_number":195,"context_line":"    checking its capabilities and will call the virt driver to ask the"},{"line_number":196,"context_line":"    instance\u0027s hypervisor if live resizing it to the target flavor is supported"},{"line_number":197,"context_line":"    or not."},{"line_number":198,"context_line":"  * ``live_resize_instance``: will be called through RPC by the conductor."}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_7e3b4ec7","line":195,"range":{"start_line":195,"start_character":39,"end_line":195,"end_character":59},"in_reply_to":"df7087c5_ee481988","updated":"2018-03-22 10:53:31.000000000","message":"I assume you\u0027re refering to the os:max_disk/memory/vcpus limits. As I\u0027ve said, for checking if the host has enough resources for the new flavor, the scheduler will have to be asked instead.\n\nThis method will still be called and have the final yeay or nay on the live-resize operation. Live-resize is still hypervisor dependennt, and the virt driver will have to be asked if it\u0027s possible (e.g.: Hyper-V: cannot live-resize if the instance is not a Generation 2 VM, libvirt: cannot live-resize if those memory / vcpu upper limits haven\u0027t been defined in the instance\u0027s XML).","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c64f1a3e0f87c115b7e355120fc7341577a179c0","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    checking its capabilities and will call the virt driver to ask the"},{"line_number":196,"context_line":"    instance\u0027s hypervisor if live resizing it to the target flavor is supported"},{"line_number":197,"context_line":"    or not."},{"line_number":198,"context_line":"  * ``live_resize_instance``: will be called through RPC by the conductor."},{"line_number":199,"context_line":"     This feature has a significantly different behaviour than the cold"},{"line_number":200,"context_line":"     migration."},{"line_number":201,"context_line":""}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_6e540922","line":198,"range":{"start_line":198,"start_character":6,"end_line":198,"end_character":26},"updated":"2018-03-22 00:04:02.000000000","message":"or have this do the checking up front, and we don\u0027t need the extra check method above.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"76a4f9562fece464d7c1b728bbb963efefe9034a","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    checking its capabilities and will call the virt driver to ask the"},{"line_number":196,"context_line":"    instance\u0027s hypervisor if live resizing it to the target flavor is supported"},{"line_number":197,"context_line":"    or not."},{"line_number":198,"context_line":"  * ``live_resize_instance``: will be called through RPC by the conductor."},{"line_number":199,"context_line":"     This feature has a significantly different behaviour than the cold"},{"line_number":200,"context_line":"     migration."},{"line_number":201,"context_line":""}],"source_content_type":"text/x-rst","patch_set":32,"id":"bf659307_c5278bb6","line":198,"range":{"start_line":198,"start_character":6,"end_line":198,"end_character":26},"in_reply_to":"bf659307_cac6ba17","updated":"2018-03-25 19:07:36.000000000","message":"exactly. as far as the `call` and `cast` calls go, I found a general rule of thumb: if the operation could be long-lasting (therefore risk of RPC timeout while the operation is still running), it\u0027s going to be a cast.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9e4f21162e89a2906bbd7e31e60357c89cc5414f","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    checking its capabilities and will call the virt driver to ask the"},{"line_number":196,"context_line":"    instance\u0027s hypervisor if live resizing it to the target flavor is supported"},{"line_number":197,"context_line":"    or not."},{"line_number":198,"context_line":"  * ``live_resize_instance``: will be called through RPC by the conductor."},{"line_number":199,"context_line":"     This feature has a significantly different behaviour than the cold"},{"line_number":200,"context_line":"     migration."},{"line_number":201,"context_line":""}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_7ea90edb","line":198,"range":{"start_line":198,"start_character":6,"end_line":198,"end_character":26},"in_reply_to":"df7087c5_6e540922","updated":"2018-03-22 10:53:31.000000000","message":"We\u0027re doing the ``check_instance_live_resize`` call in the API level so we can fail fast: is live-resize even possible? If not, return a 4XX code to the user. Once the call to the conductor has been made, the API will return a 2XX code (same as any other long-lasting operation, like cold migration / resize, live migration).\n\nReturning a 2XX code, only to see *nothing* has changed with the instance because live-resize was not possible is just confusing.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"df8289813285738815efed627ac8ee96923aa89d","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    checking its capabilities and will call the virt driver to ask the"},{"line_number":196,"context_line":"    instance\u0027s hypervisor if live resizing it to the target flavor is supported"},{"line_number":197,"context_line":"    or not."},{"line_number":198,"context_line":"  * ``live_resize_instance``: will be called through RPC by the conductor."},{"line_number":199,"context_line":"     This feature has a significantly different behaviour than the cold"},{"line_number":200,"context_line":"     migration."},{"line_number":201,"context_line":""}],"source_content_type":"text/x-rst","patch_set":32,"id":"bf659307_cac6ba17","line":198,"range":{"start_line":198,"start_character":6,"end_line":198,"end_character":26},"in_reply_to":"df7087c5_7ea90edb","updated":"2018-03-25 18:49:32.000000000","message":"Ah, the check will be `call` and the resize will be `cast` - makes sense to split them up, then.  (And that was probably obvious to most other readers who are familiar with e.g. the live migrate flow.)","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"279c26fc0374965ccc565466776b8d85307cf026","unresolved":false,"context_lines":[{"line_number":200,"context_line":"     migration."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"nova ComputeDriver:"},{"line_number":203,"context_line":"  ``supports_live_resize`` will be added to the ComputeDriver\u0027s capabilities"},{"line_number":204,"context_line":"  dict, with ``False`` as its default value."},{"line_number":205,"context_line":"  ``check_instance_live_resize`` method will be added, which will return True"},{"line_number":206,"context_line":"  or False, based on hypervisor\u0027s ability to live-resize the given instance to"},{"line_number":207,"context_line":"  the given flavor."}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_1e1f3f08","line":204,"range":{"start_line":203,"start_character":27,"end_line":204,"end_character":44},"updated":"2018-03-16 09:41:42.000000000","message":"we might mention \nhttps://review.openstack.org/#/c/538498/ \nraised in PS #25","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"e98a146d6bbdd0b2fee04116ec41f79280982d23","unresolved":false,"context_lines":[{"line_number":200,"context_line":"     migration."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"nova ComputeDriver:"},{"line_number":203,"context_line":"  ``supports_live_resize`` will be added to the ComputeDriver\u0027s capabilities"},{"line_number":204,"context_line":"  dict, with ``False`` as its default value."},{"line_number":205,"context_line":"  ``check_instance_live_resize`` method will be added, which will return True"},{"line_number":206,"context_line":"  or False, based on hypervisor\u0027s ability to live-resize the given instance to"},{"line_number":207,"context_line":"  the given flavor."}],"source_content_type":"text/x-rst","patch_set":32,"id":"bf659307_757fbbdf","line":204,"range":{"start_line":203,"start_character":27,"end_line":204,"end_character":44},"in_reply_to":"bf659307_8ad0c2cb","updated":"2018-03-30 13:23:19.000000000","message":"Well, yeah, but from what I can tell, that patch will automatically report the live resize capability as well, since it takes the whole capabilities dictionary. We could mention that the live-resize capability will be queryable.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"19533980143163db597b68ce217012ac18538869","unresolved":false,"context_lines":[{"line_number":200,"context_line":"     migration."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"nova ComputeDriver:"},{"line_number":203,"context_line":"  ``supports_live_resize`` will be added to the ComputeDriver\u0027s capabilities"},{"line_number":204,"context_line":"  dict, with ``False`` as its default value."},{"line_number":205,"context_line":"  ``check_instance_live_resize`` method will be added, which will return True"},{"line_number":206,"context_line":"  or False, based on hypervisor\u0027s ability to live-resize the given instance to"},{"line_number":207,"context_line":"  the given flavor."}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_4a7b28bd","line":204,"range":{"start_line":203,"start_character":27,"end_line":204,"end_character":44},"in_reply_to":"df7087c5_1e1f3f08","updated":"2018-03-22 08:42:21.000000000","message":"+1","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9e4f21162e89a2906bbd7e31e60357c89cc5414f","unresolved":false,"context_lines":[{"line_number":200,"context_line":"     migration."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"nova ComputeDriver:"},{"line_number":203,"context_line":"  ``supports_live_resize`` will be added to the ComputeDriver\u0027s capabilities"},{"line_number":204,"context_line":"  dict, with ``False`` as its default value."},{"line_number":205,"context_line":"  ``check_instance_live_resize`` method will be added, which will return True"},{"line_number":206,"context_line":"  or False, based on hypervisor\u0027s ability to live-resize the given instance to"},{"line_number":207,"context_line":"  the given flavor."}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_fe867e65","line":204,"range":{"start_line":203,"start_character":27,"end_line":204,"end_character":44},"in_reply_to":"df7087c5_4a7b28bd","updated":"2018-03-22 10:53:31.000000000","message":"I\u0027m not familiar with the patch, but I\u0027ll take a look.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"df8289813285738815efed627ac8ee96923aa89d","unresolved":false,"context_lines":[{"line_number":200,"context_line":"     migration."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"nova ComputeDriver:"},{"line_number":203,"context_line":"  ``supports_live_resize`` will be added to the ComputeDriver\u0027s capabilities"},{"line_number":204,"context_line":"  dict, with ``False`` as its default value."},{"line_number":205,"context_line":"  ``check_instance_live_resize`` method will be added, which will return True"},{"line_number":206,"context_line":"  or False, based on hypervisor\u0027s ability to live-resize the given instance to"},{"line_number":207,"context_line":"  the given flavor."}],"source_content_type":"text/x-rst","patch_set":32,"id":"bf659307_8ad0c2cb","line":204,"range":{"start_line":203,"start_character":27,"end_line":204,"end_character":44},"in_reply_to":"df7087c5_fe867e65","updated":"2018-03-25 18:49:32.000000000","message":"TL;DR copying (eventually moving) the compute driver\u0027s capabilities from the dict into placement traits.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c64f1a3e0f87c115b7e355120fc7341577a179c0","unresolved":false,"context_lines":[{"line_number":315,"context_line":"* Live resize notifications."},{"line_number":316,"context_line":"* ComputeManager ``live_resize`` and ``check_instance_live_resize``"},{"line_number":317,"context_line":"  implementations."},{"line_number":318,"context_line":"* ComputeDriver ``live_resize`` and ``check_instance_live_resize`` added."},{"line_number":319,"context_line":"* Nova Drivers implementation."},{"line_number":320,"context_line":"* conductor ``live_resize_instance`` implementation."},{"line_number":321,"context_line":"* Create the ``os_compute_api:servers:live_resize`` policy rule in code."}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_ce13d565","line":318,"updated":"2018-03-22 00:04:02.000000000","message":"you forgot live_resize_supported\n\nBut as mentioned above, I\u0027m not convinced we need more than one new method, live_resize.  Add some new exceptions to be raised by that method during a \u0027check\u0027 phase - LiveResizeNotSupportedAtAll, LiveResizeNotSupportedForThisResourceClass, etc. - as well as LiveResizeFailed for when it actually goes to do it.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"df8289813285738815efed627ac8ee96923aa89d","unresolved":false,"context_lines":[{"line_number":315,"context_line":"* Live resize notifications."},{"line_number":316,"context_line":"* ComputeManager ``live_resize`` and ``check_instance_live_resize``"},{"line_number":317,"context_line":"  implementations."},{"line_number":318,"context_line":"* ComputeDriver ``live_resize`` and ``check_instance_live_resize`` added."},{"line_number":319,"context_line":"* Nova Drivers implementation."},{"line_number":320,"context_line":"* conductor ``live_resize_instance`` implementation."},{"line_number":321,"context_line":"* Create the ``os_compute_api:servers:live_resize`` policy rule in code."}],"source_content_type":"text/x-rst","patch_set":32,"id":"bf659307_4adaaae9","line":318,"in_reply_to":"df7087c5_9e0e62e3","updated":"2018-03-25 18:49:32.000000000","message":"Yup, dig.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"9e4f21162e89a2906bbd7e31e60357c89cc5414f","unresolved":false,"context_lines":[{"line_number":315,"context_line":"* Live resize notifications."},{"line_number":316,"context_line":"* ComputeManager ``live_resize`` and ``check_instance_live_resize``"},{"line_number":317,"context_line":"  implementations."},{"line_number":318,"context_line":"* ComputeDriver ``live_resize`` and ``check_instance_live_resize`` added."},{"line_number":319,"context_line":"* Nova Drivers implementation."},{"line_number":320,"context_line":"* conductor ``live_resize_instance`` implementation."},{"line_number":321,"context_line":"* Create the ``os_compute_api:servers:live_resize`` policy rule in code."}],"source_content_type":"text/x-rst","patch_set":32,"id":"df7087c5_9e0e62e3","line":318,"in_reply_to":"df7087c5_ce13d565","updated":"2018-03-22 10:53:31.000000000","message":"Indeed, I forgot to add it, thanks!\n\nThe ``check_instance_live_resize`` method is so we can fail-fast at the API level, returning a 4XX status code, with possibly with a message as to *why* it failed. That method is for asking the virt driver if live-resize is possible from that hypervisor\u0027s perspective.\n\nAs I\u0027ve said, just accepting the request and passing it to the conductor (the API will return a 2XX status code) and failing afterwards will just be confusing: the instance is still UP, still RUNNING, but nothing happened and the user won\u0027t probably have a way to find out why.","commit_id":"3abfca544b555437b11292f289c33971f20e9ab1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"df21d5ba4ca51cb1eba5fd412ed2ed52089e2c4d","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":129,"context_line":"  upsizing."},{"line_number":130,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":131,"context_line":"  contain the list of live-resizable resources supported by the guest. This is"},{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."}],"source_content_type":"text/x-rst","patch_set":33,"id":"bf659307_f092f956","line":130,"range":{"start_line":130,"start_character":6,"end_line":130,"end_character":11},"updated":"2018-03-30 14:18:13.000000000","message":"Hm, does the image (metadata) stay attached to the instance after spawn?  Or are you planning to convey this information into the instance object at spawn time?","commit_id":"27b3f0ceb31210f4b7338bb62d43365e45861804"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"df21d5ba4ca51cb1eba5fd412ed2ed52089e2c4d","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":129,"context_line":"  upsizing."},{"line_number":130,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":131,"context_line":"  contain the list of live-resizable resources supported by the guest. This is"},{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."}],"source_content_type":"text/x-rst","patch_set":33,"id":"bf659307_70a7c9be","line":130,"range":{"start_line":130,"start_character":12,"end_line":130,"end_character":16},"updated":"2018-03-30 14:18:13.000000000","message":"If it doesn\u0027t, do we assume you can\u0027t live-resize at all, or do we assume you\u0027re unrestricted?","commit_id":"27b3f0ceb31210f4b7338bb62d43365e45861804"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"291a6209435e5efd86d987e5458a811540811cb0","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":129,"context_line":"  upsizing."},{"line_number":130,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":131,"context_line":"  contain the list of live-resizable resources supported by the guest. This is"},{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."}],"source_content_type":"text/x-rst","patch_set":33,"id":"3f79a3b5_5c96d540","line":130,"range":{"start_line":130,"start_character":6,"end_line":130,"end_character":11},"in_reply_to":"3f79a3b5_3b33e215","updated":"2018-09-12 18:05:52.000000000","message":"great, good to know. We should probably note this in the Other end users impact section.","commit_id":"27b3f0ceb31210f4b7338bb62d43365e45861804"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b81a97379f5e7730163dcda4cd65b043d8b49ddd","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":129,"context_line":"  upsizing."},{"line_number":130,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":131,"context_line":"  contain the list of live-resizable resources supported by the guest. This is"},{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."}],"source_content_type":"text/x-rst","patch_set":33,"id":"bf659307_91c85522","line":130,"range":{"start_line":130,"start_character":6,"end_line":130,"end_character":11},"in_reply_to":"bf659307_3f57dd5a","updated":"2018-03-31 22:03:20.000000000","message":"I don\u0027t disagree.  I\u0027m also not an expert here.  But we still have open questions in 2 above, yes?","commit_id":"27b3f0ceb31210f4b7338bb62d43365e45861804"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"88c082b19d6ef7ce048a35fad73559b1c0b8dfde","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":129,"context_line":"  upsizing."},{"line_number":130,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":131,"context_line":"  contain the list of live-resizable resources supported by the guest. This is"},{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."}],"source_content_type":"text/x-rst","patch_set":33,"id":"bf659307_3f57dd5a","line":130,"range":{"start_line":130,"start_character":6,"end_line":130,"end_character":11},"in_reply_to":"bf659307_766a62ed","updated":"2018-03-30 18:41:19.000000000","message":"Hm, TBH, you can\u0027t really say it\u0027s the *same* glance image after you\u0027ve upgraded the OS in the guest. Normally, you\u0027d snapshot it, and spawn new instances from the new glance image, where you can set the new image metadata properties.\n\nAdditionally, if you DO upgrade the guest OS and keep the *same* glance image ref, adding the the os_live_resize image property just for your one and only upgraded instance is wrong, it\u0027ll permit live-resize for the instances with unupgraded OSes as well.\n\nIMO, the 2nd case is a user mistake, no one should do something like this, but currently I don\u0027t know how we could combat this, or if we should bother with it.","commit_id":"27b3f0ceb31210f4b7338bb62d43365e45861804"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"3fbeb1314552da180734d6f12b2d61cb747c6e6d","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":129,"context_line":"  upsizing."},{"line_number":130,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":131,"context_line":"  contain the list of live-resizable resources supported by the guest. This is"},{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."}],"source_content_type":"text/x-rst","patch_set":33,"id":"3f79a3b5_3b33e215","line":130,"range":{"start_line":130,"start_character":6,"end_line":130,"end_character":11},"in_reply_to":"bf659307_91c85522","updated":"2018-09-12 17:47:39.000000000","message":"I can confirm that when you create a volume from an image the image metadata are copied over into the volume metadata as a one-shot deal.  If you then update the image properties that will not affect any already-created volumes.  So if you want to update the cached image properties associated with the volume you need to update them via cinder.\n\nI can also confirm that the image properties are not cached in the nova DB.","commit_id":"27b3f0ceb31210f4b7338bb62d43365e45861804"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"694896df2c141f4c63ea49d6ead0588d5e060d9f","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":129,"context_line":"  upsizing."},{"line_number":130,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":131,"context_line":"  contain the list of live-resizable resources supported by the guest. This is"},{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."}],"source_content_type":"text/x-rst","patch_set":33,"id":"bf659307_766a62ed","line":130,"range":{"start_line":130,"start_character":6,"end_line":130,"end_character":11},"in_reply_to":"bf659307_f07439d1","updated":"2018-03-30 15:38:40.000000000","message":"Presumably it is also legal for me to upgrade the OS in my guest (from within) which might make it now capable of resizes where it wasn\u0027t previously, regardless of what the original image said.  Not sure if we want to handle this case or not.","commit_id":"27b3f0ceb31210f4b7338bb62d43365e45861804"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"3c391b14bda98035bac772ee215d11fef74bbd5a","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":129,"context_line":"  upsizing."},{"line_number":130,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":131,"context_line":"  contain the list of live-resizable resources supported by the guest. This is"},{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."}],"source_content_type":"text/x-rst","patch_set":33,"id":"bf659307_f07439d1","line":130,"range":{"start_line":130,"start_character":6,"end_line":130,"end_character":11},"in_reply_to":"bf659307_f092f956","updated":"2018-03-30 14:42:02.000000000","message":"1. We\u0027re going to assume that we can\u0027t live-resize at all.\n\n2. That\u0027s actually an interesting question. AFAIK, whenever image metadata properties are used, they\u0027re fetched directly from glance and converted to the ImageMetaProps object, which means that an instance could be spawned without the os_live_resize image metadata property, but afterwards the image metadata property could be added, and it would be taken into account (95% sure it happens like this). But I\u0027m more skeptic about boot-from-volume instances. Initially, the cinder volume will inherit the glance image\u0027s metadata properties, but I highly doubt that they\u0027re going to be updated / added when the respective glance image properties get updated / added / removed. I this case, I think that the os_live_resize metadata property will have to be added / updated on the cinder boot volumes as well.\n\nI will have to look into 2. But if anyone already knows the answer, I\u0027d greatly appreciate it. :)\n\nAnd unrelated to live-resize, now that you\u0027ve mentioned 2., this could potentially be a problem on cold resize / cold migration. Generally, image metadata properties are important to the instances themselves, and in some cases, mandatory.\n\nFor example, a Hyper-V Generation 2 VM disk can only be used by a Hyper-V Generation 2 VM, and a Gen 1 VM disk can only be used by a Hyper-V Gen 1 VM. So if I\u0027m creating a Hyper-V Generation 2 VM instance (has the image metadata property hw_machine_type\u003dhyperv-gen2), and afterwards I decide to delete that image property, and then decide to cold migrate / cold resize the instance, I\u0027d end up with a broken instance, because most drivers on cold migration / resize destroy the instance on the source and recreate it at the destination. But since the image property no longer exists, a Generation 1 VM is created instead, and it won\u0027t be able to boot a Generation 2 VM disk.","commit_id":"27b3f0ceb31210f4b7338bb62d43365e45861804"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"df21d5ba4ca51cb1eba5fd412ed2ed52089e2c4d","unresolved":false,"context_lines":[{"line_number":131,"context_line":"  contain the list of live-resizable resources supported by the guest. This is"},{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."},{"line_number":134,"context_line":"  e.g.: ``os_live_resize\u003ddisk,memory,vcpu``"},{"line_number":135,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":136,"context_line":"  created with boot from volume."},{"line_number":137,"context_line":"* The target flavor for live resize might have a larger amount of memory or"}],"source_content_type":"text/x-rst","patch_set":33,"id":"bf659307_508ba51d","line":134,"range":{"start_line":134,"start_character":25,"end_line":134,"end_character":41},"updated":"2018-03-30 14:18:13.000000000","message":"Will these be real resource class names (DISK_GB,MEMORY_MB,VCPU)?  If not, why not?","commit_id":"27b3f0ceb31210f4b7338bb62d43365e45861804"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"3c391b14bda98035bac772ee215d11fef74bbd5a","unresolved":false,"context_lines":[{"line_number":131,"context_line":"  contain the list of live-resizable resources supported by the guest. This is"},{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."},{"line_number":134,"context_line":"  e.g.: ``os_live_resize\u003ddisk,memory,vcpu``"},{"line_number":135,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":136,"context_line":"  created with boot from volume."},{"line_number":137,"context_line":"* The target flavor for live resize might have a larger amount of memory or"}],"source_content_type":"text/x-rst","patch_set":33,"id":"bf659307_504de597","line":134,"range":{"start_line":134,"start_character":25,"end_line":134,"end_character":41},"in_reply_to":"bf659307_508ba51d","updated":"2018-03-30 14:42:02.000000000","message":"sure, we can use the resource class names.","commit_id":"27b3f0ceb31210f4b7338bb62d43365e45861804"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"df21d5ba4ca51cb1eba5fd412ed2ed52089e2c4d","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."},{"line_number":134,"context_line":"  e.g.: ``os_live_resize\u003ddisk,memory,vcpu``"},{"line_number":135,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":136,"context_line":"  created with boot from volume."},{"line_number":137,"context_line":"* The target flavor for live resize might have a larger amount of memory or"},{"line_number":138,"context_line":"  vCPUs, and it\u0027s up to the hypervisor to decide whether it\u0027s supported or not."}],"source_content_type":"text/x-rst","patch_set":33,"id":"bf659307_7090294b","line":135,"range":{"start_line":135,"start_character":31,"end_line":135,"end_character":51},"updated":"2018-03-30 14:18:13.000000000","message":"As long as we don\u0027t paint ourselves into a corner where we can *never* reduce disk size.\n\nDitto other resources below.","commit_id":"27b3f0ceb31210f4b7338bb62d43365e45861804"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"88c082b19d6ef7ce048a35fad73559b1c0b8dfde","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."},{"line_number":134,"context_line":"  e.g.: ``os_live_resize\u003ddisk,memory,vcpu``"},{"line_number":135,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":136,"context_line":"  created with boot from volume."},{"line_number":137,"context_line":"* The target flavor for live resize might have a larger amount of memory or"},{"line_number":138,"context_line":"  vCPUs, and it\u0027s up to the hypervisor to decide whether it\u0027s supported or not."}],"source_content_type":"text/x-rst","patch_set":33,"id":"bf659307_ffd725ed","line":135,"range":{"start_line":135,"start_character":31,"end_line":135,"end_character":51},"in_reply_to":"bf659307_36614a06","updated":"2018-03-30 18:41:19.000000000","message":"Got it. These flavor checks are made at the API level, so changing that based on the microversion shouldn\u0027t be a problem. Currently, I have a method called _check_live_resizable_flavor which does the flavor checks.","commit_id":"27b3f0ceb31210f4b7338bb62d43365e45861804"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"3c391b14bda98035bac772ee215d11fef74bbd5a","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."},{"line_number":134,"context_line":"  e.g.: ``os_live_resize\u003ddisk,memory,vcpu``"},{"line_number":135,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":136,"context_line":"  created with boot from volume."},{"line_number":137,"context_line":"* The target flavor for live resize might have a larger amount of memory or"},{"line_number":138,"context_line":"  vCPUs, and it\u0027s up to the hypervisor to decide whether it\u0027s supported or not."}],"source_content_type":"text/x-rst","patch_set":33,"id":"bf659307_f022f9b8","line":135,"range":{"start_line":135,"start_character":31,"end_line":135,"end_character":51},"in_reply_to":"bf659307_7090294b","updated":"2018-03-30 14:42:02.000000000","message":"You mean live downsize?\n\nIMO, if we are going to add live downsize in the future, I think that should be another nova API microversion (same API though).","commit_id":"27b3f0ceb31210f4b7338bb62d43365e45861804"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"694896df2c141f4c63ea49d6ead0588d5e060d9f","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."},{"line_number":134,"context_line":"  e.g.: ``os_live_resize\u003ddisk,memory,vcpu``"},{"line_number":135,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":136,"context_line":"  created with boot from volume."},{"line_number":137,"context_line":"* The target flavor for live resize might have a larger amount of memory or"},{"line_number":138,"context_line":"  vCPUs, and it\u0027s up to the hypervisor to decide whether it\u0027s supported or not."}],"source_content_type":"text/x-rst","patch_set":33,"id":"bf659307_36614a06","line":135,"range":{"start_line":135,"start_character":31,"end_line":135,"end_character":51},"in_reply_to":"bf659307_f022f9b8","updated":"2018-03-30 15:38:40.000000000","message":"Sure, whatever, just want to make sure we don\u0027t make it difficult/impossible to add.","commit_id":"27b3f0ceb31210f4b7338bb62d43365e45861804"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"df21d5ba4ca51cb1eba5fd412ed2ed52089e2c4d","unresolved":false,"context_lines":[{"line_number":202,"context_line":"nova ComputeDriver:"},{"line_number":203,"context_line":"  ``supports_live_resize`` will be added to the ComputeDriver\u0027s capabilities"},{"line_number":204,"context_line":"  dict, with ``False`` as its default value. The ResourceTracker will then"},{"line_number":205,"context_line":"  report the ``CUSTOM_COMPUTE_SUPPORTS_LIVE_RESIZE`` trait on the compute"},{"line_number":206,"context_line":"  node\u0027s resource provider, which will be queryable through the Placement API."},{"line_number":207,"context_line":"  ``check_instance_live_resize`` method will be added, which will return True"},{"line_number":208,"context_line":"  or False, based on hypervisor\u0027s ability to live-resize the given instance to"}],"source_content_type":"text/x-rst","patch_set":33,"id":"bf659307_d0a3359d","line":205,"range":{"start_line":205,"start_character":15,"end_line":205,"end_character":50},"updated":"2018-03-30 14:18:13.000000000","message":"...which should ultimately be folded into os-traits qua [1].\n\n[1] https://review.openstack.org/#/c/546713/","commit_id":"27b3f0ceb31210f4b7338bb62d43365e45861804"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"3c391b14bda98035bac772ee215d11fef74bbd5a","unresolved":false,"context_lines":[{"line_number":202,"context_line":"nova ComputeDriver:"},{"line_number":203,"context_line":"  ``supports_live_resize`` will be added to the ComputeDriver\u0027s capabilities"},{"line_number":204,"context_line":"  dict, with ``False`` as its default value. The ResourceTracker will then"},{"line_number":205,"context_line":"  report the ``CUSTOM_COMPUTE_SUPPORTS_LIVE_RESIZE`` trait on the compute"},{"line_number":206,"context_line":"  node\u0027s resource provider, which will be queryable through the Placement API."},{"line_number":207,"context_line":"  ``check_instance_live_resize`` method will be added, which will return True"},{"line_number":208,"context_line":"  or False, based on hypervisor\u0027s ability to live-resize the given instance to"}],"source_content_type":"text/x-rst","patch_set":33,"id":"bf659307_30487185","line":205,"range":{"start_line":205,"start_character":15,"end_line":205,"end_character":50},"in_reply_to":"bf659307_d0a3359d","updated":"2018-03-30 14:42:02.000000000","message":"ah ok, I didn\u0027t know. Good point.","commit_id":"27b3f0ceb31210f4b7338bb62d43365e45861804"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"694896df2c141f4c63ea49d6ead0588d5e060d9f","unresolved":false,"context_lines":[{"line_number":200,"context_line":"     migration."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"os-traits:"},{"line_number":203,"context_line":"  The ``CUSTOM_COMPUTE_SUPPORTS_LIVE_RESIZE`` will be added to os-traits."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"nova ComputeDriver:"},{"line_number":206,"context_line":"  ``supports_live_resize`` will be added to the ComputeDriver\u0027s capabilities"}],"source_content_type":"text/x-rst","patch_set":34,"id":"bf659307_d637aefe","line":203,"range":{"start_line":203,"start_character":8,"end_line":203,"end_character":43},"updated":"2018-03-30 15:38:40.000000000","message":"Though it\u0027ll probably be called COMPUTE_LIVE_RESIZE in there.","commit_id":"49e2fd6824df629b09d29e66c91cc50b92694529"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"88c082b19d6ef7ce048a35fad73559b1c0b8dfde","unresolved":false,"context_lines":[{"line_number":200,"context_line":"     migration."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"os-traits:"},{"line_number":203,"context_line":"  The ``CUSTOM_COMPUTE_SUPPORTS_LIVE_RESIZE`` will be added to os-traits."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"nova ComputeDriver:"},{"line_number":206,"context_line":"  ``supports_live_resize`` will be added to the ComputeDriver\u0027s capabilities"}],"source_content_type":"text/x-rst","patch_set":34,"id":"bf659307_df958134","line":203,"range":{"start_line":203,"start_character":8,"end_line":203,"end_character":43},"in_reply_to":"bf659307_d637aefe","updated":"2018-03-30 18:41:19.000000000","message":"Hm, it seems so. It might still change, the patch that reports the driver\u0027s capabilities hasn\u0027t merged yet.","commit_id":"49e2fd6824df629b09d29e66c91cc50b92694529"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"662dd83a3bfc8f988c196cf89ad3e90e88f837fe","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":129,"context_line":"  upsizing."},{"line_number":130,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":131,"context_line":"  contain the list of live-resizable resources supported by the guest. This is"},{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."},{"line_number":134,"context_line":"  e.g.: ``os_live_resize\u003dDISK_GB,MEMORY_MB,VCPU``"},{"line_number":135,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":136,"context_line":"  created with boot from volume."},{"line_number":137,"context_line":"* The target flavor for live resize might have a larger amount of memory or"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3f79a3b5_888fe0cb","line":134,"range":{"start_line":130,"start_character":0,"end_line":134,"end_character":49},"updated":"2018-08-13 09:48:40.000000000","message":"We just said this was for pets. Image metadata is really for cattle, and this is a user operation. I\u0027m inclined to say that if a user wants to resize their pet, they\u0027re best placed to know if it can be resized or not. This seems like an artificial barrier to me.","commit_id":"a9c98c01672870c48f563f5aac77b5e14ac6aaef"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"af7c7911e1afa9270dc39694a62496bf7cca0a94","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":129,"context_line":"  upsizing."},{"line_number":130,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":131,"context_line":"  contain the list of live-resizable resources supported by the guest. This is"},{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."},{"line_number":134,"context_line":"  e.g.: ``os_live_resize\u003dDISK_GB,MEMORY_MB,VCPU``"},{"line_number":135,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":136,"context_line":"  created with boot from volume."},{"line_number":137,"context_line":"* The target flavor for live resize might have a larger amount of memory or"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3f79a3b5_94fa9540","line":134,"range":{"start_line":130,"start_character":0,"end_line":134,"end_character":49},"in_reply_to":"3f79a3b5_888fe0cb","updated":"2018-08-13 12:53:56.000000000","message":"Hm, well, at the time of writing this spec, the only options were image metadata properties and flavor extra-specs. There\u0027s already a very large number of flavors extra-specs which leads to a large and hard to manage number of flavors. Additionally, if an instance was spawned without live-resize related extra-specs, it would have to be cold-resized to a flavor containing them in the first place, while this is not a problem for image metadata properties. If there\u0027s a new, better way to set this properties, I\u0027m open to it.\n\nAs for **why** we actually need this, IMO, there are 2 issues:\n\n1. Not all users know or have to know what resources are live-resizable on an OS. For example, older OSes might not support memory / CPU live-resize. Additionally, there were discussions to extend this resource list to include NUMA-related resources in the future. IMO, the operators should set this property on images, the users will only care if they can live-resize an isntance or not.\n\n2. Implementation-wise. We need to know what live-resizable resources are supported by the guest. If we live-resize the number of CPUs / memory, but the guest is not consuming those resources, then we\u0027re pointlessly claiming resources for an instance that should but does not consume them.","commit_id":"a9c98c01672870c48f563f5aac77b5e14ac6aaef"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"c759daa5d39408f78815d57ae30096a35b8d05d1","unresolved":false,"context_lines":[{"line_number":147,"context_line":"  allowed for that resource type. The new flavor must not have greater values"},{"line_number":148,"context_line":"  than the limits set by these flavor extra specs."},{"line_number":149,"context_line":"* Instances using NUMA topologies must have been created or cold resized with"},{"line_number":150,"context_line":"  a flavor containing the extra specs ``os:max_memory:N`` and"},{"line_number":151,"context_line":"  ``os:max_vcpus:N`` for every NUMA node N. This will allow the memory and"},{"line_number":152,"context_line":"  number of vCPUs to be live resized up to that value in those NUMA cells."},{"line_number":153,"context_line":"  Alternatively, for symmetric NUMA topologies, the default values for these"},{"line_number":154,"context_line":"  extra specs will be `` os:max_memory / N`` and ``os:max_vcpus / N``, where"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3f79a3b5_0ac28487","line":151,"range":{"start_line":150,"start_character":5,"end_line":151,"end_character":24},"updated":"2018-09-10 18:20:53.000000000","message":"I think this should be \"os:max_memory.N\" and \"os:max_vcpus.N\"","commit_id":"a9c98c01672870c48f563f5aac77b5e14ac6aaef"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"claudiu.belu@canonical.com","username":"claudiub"},"change_message_id":"8947d8f1761454406d3890c49d9f347f1f224a5c","unresolved":false,"context_lines":[{"line_number":147,"context_line":"  allowed for that resource type. The new flavor must not have greater values"},{"line_number":148,"context_line":"  than the limits set by these flavor extra specs."},{"line_number":149,"context_line":"* Instances using NUMA topologies must have been created or cold resized with"},{"line_number":150,"context_line":"  a flavor containing the extra specs ``os:max_memory:N`` and"},{"line_number":151,"context_line":"  ``os:max_vcpus:N`` for every NUMA node N. This will allow the memory and"},{"line_number":152,"context_line":"  number of vCPUs to be live resized up to that value in those NUMA cells."},{"line_number":153,"context_line":"  Alternatively, for symmetric NUMA topologies, the default values for these"},{"line_number":154,"context_line":"  extra specs will be `` os:max_memory / N`` and ``os:max_vcpus / N``, where"}],"source_content_type":"text/x-rst","patch_set":35,"id":"3f79a3b5_1ee93fb6","line":151,"range":{"start_line":150,"start_character":5,"end_line":151,"end_character":24},"in_reply_to":"3f79a3b5_0ac28487","updated":"2018-09-12 09:16:06.000000000","message":"Done","commit_id":"a9c98c01672870c48f563f5aac77b5e14ac6aaef"}],"specs/stein/approved/instance-live-resize.rst":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"d88f2c38a7978e04389dc5453b9efc0a741009ed","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/instance-live-resize"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Hyper-V, KVM, VMWare, Xen, PowerVM allows users to resize both memory and local"},{"line_number":14,"context_line":"disks of the VMs while they are still running. Because of this, no down time is"},{"line_number":15,"context_line":"needed for the spawned instances when live resize is performed on the same"},{"line_number":16,"context_line":"host."}],"source_content_type":"text/x-rst","patch_set":36,"id":"5fc1f717_f8e9657e","line":13,"range":{"start_line":13,"start_character":9,"end_line":13,"end_character":12},"updated":"2019-04-09 16:59:08.000000000","message":"supernit - QEMU/KVM","commit_id":"f379ccf7a5fb3d6c8863a945b622708f9e758789"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"00da61ff0413ac3dec64578ffd2a947ca9b68aef","unresolved":false,"context_lines":[{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"The main disadvantage for resizing an instance is the required down time"},{"line_number":23,"context_line":"necessary to do so. This spec will allow users to resize their instances while"},{"line_number":24,"context_line":"they are still running."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":36,"id":"3f79a3b5_f48e0d7a","line":23,"range":{"start_line":23,"start_character":41,"end_line":23,"end_character":46},"updated":"2018-11-13 14:23:24.000000000","message":"policy driven I guess ?","commit_id":"f379ccf7a5fb3d6c8863a945b622708f9e758789"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"d88f2c38a7978e04389dc5453b9efc0a741009ed","unresolved":false,"context_lines":[{"line_number":67,"context_line":"Minimum hypervisor version required:"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* Hyper-V: Windows Hyper-V / Server 2012 R2: 6.3"},{"line_number":70,"context_line":"* QEMU (-KVM): 2.1"},{"line_number":71,"context_line":"* VMWare: 5.5"},{"line_number":72,"context_line":"* XenServer: 6.2.0"},{"line_number":73,"context_line":"* PowerVM: 4"}],"source_content_type":"text/x-rst","patch_set":36,"id":"5fc1f717_f89e4504","line":70,"range":{"start_line":70,"start_character":0,"end_line":70,"end_character":18},"updated":"2019-04-09 16:59:08.000000000","message":"What about Libvirt?","commit_id":"f379ccf7a5fb3d6c8863a945b622708f9e758789"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"00da61ff0413ac3dec64578ffd2a947ca9b68aef","unresolved":false,"context_lines":[{"line_number":91,"context_line":"downsizing could be added later on in a different spec."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Live resize will only be possible on the same host. If there are not enough"},{"line_number":94,"context_line":"resources available, live resize will not be performed."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"There are a couple of concerns raised regarding the implementation of this"},{"line_number":97,"context_line":"feature."}],"source_content_type":"text/x-rst","patch_set":36,"id":"3f79a3b5_74fc3dbc","line":94,"updated":"2018-11-13 14:23:24.000000000","message":"That\u0027s a very different behaviour from a \u0027cold\u0027 resize which implies migration by default (since the \u0027same-host\u0027 resize flag is False by default)\n\nIf we plan to have \u0027live-resize\u0027 to be an user API, I\u0027m a bit concerned that naughty users could try to DoS the computes by \u0027guessing\u0027 with live-migrate what capacity the compute still has.\n\nCould we just consequently leave the policy to be admin-only unless some operators modify this explicitely ?","commit_id":"f379ccf7a5fb3d6c8863a945b622708f9e758789"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"00da61ff0413ac3dec64578ffd2a947ca9b68aef","unresolved":false,"context_lines":[{"line_number":107,"context_line":"rollback through live-downsize is not supported by all hypervisors and guests"},{"line_number":108,"context_line":"and it can fail. In order to address this concern, there are two solutions:"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  1. Only allow live resize to flavors having only one resource different"},{"line_number":111,"context_line":"  (e.g.: target flavor has the same amount of memory and vCPUs, but more disk)."},{"line_number":112,"context_line":"  This will allow us to live resize one resource at a time, and if the"},{"line_number":113,"context_line":"  operation fails, the resource will maintain its old value."}],"source_content_type":"text/x-rst","patch_set":36,"id":"3f79a3b5_34d4851e","line":110,"range":{"start_line":110,"start_character":46,"end_line":110,"end_character":63},"updated":"2018-11-13 14:23:24.000000000","message":"how can the user/admin know which resource they can change ? I assume this spec only focuses on simple resource classes (VCPUs, MEM_MB or DISK_GB) right?","commit_id":"f379ccf7a5fb3d6c8863a945b622708f9e758789"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"00da61ff0413ac3dec64578ffd2a947ca9b68aef","unresolved":false,"context_lines":[{"line_number":110,"context_line":"  1. Only allow live resize to flavors having only one resource different"},{"line_number":111,"context_line":"  (e.g.: target flavor has the same amount of memory and vCPUs, but more disk)."},{"line_number":112,"context_line":"  This will allow us to live resize one resource at a time, and if the"},{"line_number":113,"context_line":"  operation fails, the resource will maintain its old value."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"  2. Save the VM state before live resize. This means that the VM will be"},{"line_number":116,"context_line":"  paused (in order to prevent data loss during rollback) and its state will be"}],"source_content_type":"text/x-rst","patch_set":36,"id":"3f79a3b5_14db894c","line":113,"updated":"2018-11-13 14:23:24.000000000","message":"Do we check the extra specs too, and fail if those are different?","commit_id":"f379ccf7a5fb3d6c8863a945b622708f9e758789"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"00da61ff0413ac3dec64578ffd2a947ca9b68aef","unresolved":false,"context_lines":[{"line_number":131,"context_line":"  contain the list of live-resizable resources supported by the guest. This is"},{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."},{"line_number":134,"context_line":"  e.g.: ``os_live_resize\u003dDISK_GB,MEMORY_MB,VCPU``"},{"line_number":135,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":136,"context_line":"  created with boot from volume."},{"line_number":137,"context_line":"* The target flavor for live resize might have a larger amount of memory or"}],"source_content_type":"text/x-rst","patch_set":36,"id":"3f79a3b5_14c4e960","line":134,"updated":"2018-11-13 14:23:24.000000000","message":"Do we fail live-resize if the image has incorrect resource classes ?\n\nDo we plan some kind of image validation mechanism ?","commit_id":"f379ccf7a5fb3d6c8863a945b622708f9e758789"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"d88f2c38a7978e04389dc5453b9efc0a741009ed","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."},{"line_number":134,"context_line":"  e.g.: ``os_live_resize\u003dDISK_GB,MEMORY_MB,VCPU``"},{"line_number":135,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":136,"context_line":"  created with boot from volume."},{"line_number":137,"context_line":"* The target flavor for live resize might have a larger amount of memory or"},{"line_number":138,"context_line":"  vCPUs, and it\u0027s up to the hypervisor to decide whether it\u0027s supported or not."},{"line_number":139,"context_line":"  If it\u0027s not supported, some kind of exception like \u0027LiveResizeNotAccepted\u0027"}],"source_content_type":"text/x-rst","patch_set":36,"id":"5fc1f717_fb407f08","line":136,"range":{"start_line":135,"start_character":0,"end_line":136,"end_character":32},"updated":"2019-04-09 16:59:08.000000000","message":"I\u0027m not sure I understand this, are you saying the original image must be of a size greater than the original flavor DISK_GB to accommodate the resize up?\n\nAdditionally if this is boot from volume I assume we are going to direct callers to the os-extend volume API?","commit_id":"f379ccf7a5fb3d6c8863a945b622708f9e758789"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"00da61ff0413ac3dec64578ffd2a947ca9b68aef","unresolved":false,"context_lines":[{"line_number":139,"context_line":"  If it\u0027s not supported, some kind of exception like \u0027LiveResizeNotAccepted\u0027"},{"line_number":140,"context_line":"  will be raised."},{"line_number":141,"context_line":"* If target flavor have any different extra specs, it is up to virt driver to"},{"line_number":142,"context_line":"  decide whether it\u0027s allowed or not."},{"line_number":143,"context_line":"* The instance must have been created or cold resized with a flavor containing"},{"line_number":144,"context_line":"  the following extra specs: ``os:max_memory``, ``os:max_vcpus``,"},{"line_number":145,"context_line":"  ``os:max_disk``. These specs will set the upper limits for live resize."}],"source_content_type":"text/x-rst","patch_set":36,"id":"3f79a3b5_54a7c1bc","line":142,"updated":"2018-11-13 14:23:24.000000000","message":"Huh. I\u0027m not sure I like that. For example, what if I\u0027m passing NUMA guest topology ?\n\nI guess it\u0027s probably tied to the question I asked L110. If we leave the virt driver define it, how can the user know what he can do ?","commit_id":"f379ccf7a5fb3d6c8863a945b622708f9e758789"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"00da61ff0413ac3dec64578ffd2a947ca9b68aef","unresolved":false,"context_lines":[{"line_number":287,"context_line":"---------------------"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"The operators are able to control the live-resize functions through the"},{"line_number":290,"context_line":"``os_compute_api:servers:live_resize`` policy in the ``policy.json`` file."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"Operators will have to add the image properties ``os_live_resize`` in order to"},{"line_number":293,"context_line":"properly use this feature."}],"source_content_type":"text/x-rst","patch_set":36,"id":"3f79a3b5_6f054a0f","line":290,"updated":"2018-11-13 14:23:24.000000000","message":"Which is the default ?","commit_id":"f379ccf7a5fb3d6c8863a945b622708f9e758789"}],"specs/wallaby/approved/instance-live-resize.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Instance live resize"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/instance-live-resize"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_9fe5d6df","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":20},"updated":"2020-11-18 13:12:55.000000000","message":"this shoudl be live resize up by the way.\nwe in general cant live resize down.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Hyper-V, KVM, VMWare, Xen, PowerVM allows users to resize both memory and local"},{"line_number":14,"context_line":"disks of the VMs while they are still running. Because of this, no down time is"},{"line_number":15,"context_line":"needed for the spawned instances when live resize is performed on the same"},{"line_number":16,"context_line":"host."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_dfce2e5a","line":16,"range":{"start_line":15,"start_character":38,"end_line":16,"end_character":5},"updated":"2020-11-18 13:12:55.000000000","message":"in general a resize changes host so if we support live resize we have to assume it will be a live resize to a different host in most cases via i guess a live migration followed by a live resize.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    - ✓ [1c]_ [1d]_"},{"line_number":43,"context_line":"    - X"},{"line_number":44,"context_line":"    - ✓ [1e]_"},{"line_number":45,"context_line":"  * - **KVM + Libvirt**"},{"line_number":46,"context_line":"    - ✓ [2a]_"},{"line_number":47,"context_line":"    - ✓ [2b]_ [2c]_"},{"line_number":48,"context_line":"    - ✓ [2d]_"},{"line_number":49,"context_line":"    - ✓ [2e]_"},{"line_number":50,"context_line":"  * - **PowerVM**"},{"line_number":51,"context_line":"    - ✓"},{"line_number":52,"context_line":"    - ✓"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_3f092295","line":49,"range":{"start_line":45,"start_character":0,"end_line":49,"end_character":13},"updated":"2020-11-18 13:12:55.000000000","message":"this is kind of misleading libvirt can support it but it required the libvirt dirver to generate the xmls noticably differently then we do today\n\nmemory requires max_memory to be set or the use of the memroy notplug supprot which need the max dimms set.\ni belive cpus also requires max_cpus to be set\n\ndisk is easy to increase\n\npci devices is not nesisarly possible.\nfor both the pc and q35 machine types we have a limited number of pci slot we can use in the guest. by default with q35 its the total number required for the current devices +1, this is libvirt default behavior.\n\nso you may not have a free pci port to attch the device too.\nthere is a non zeor memory over head to pci port of the order fo a few 100mb if you enable all 32 that can be supported so just enabling the max amount is not a greate option by default so we would need a way to specify this in the flavor","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"1649a4967f71e3dbc4c7fccbfb0d7d4b10daa696","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    - ✓ [1c]_ [1d]_"},{"line_number":43,"context_line":"    - X"},{"line_number":44,"context_line":"    - ✓ [1e]_"},{"line_number":45,"context_line":"  * - **KVM + Libvirt**"},{"line_number":46,"context_line":"    - ✓ [2a]_"},{"line_number":47,"context_line":"    - ✓ [2b]_ [2c]_"},{"line_number":48,"context_line":"    - ✓ [2d]_"},{"line_number":49,"context_line":"    - ✓ [2e]_"},{"line_number":50,"context_line":"  * - **PowerVM**"},{"line_number":51,"context_line":"    - ✓"},{"line_number":52,"context_line":"    - ✓"}],"source_content_type":"text/x-rst","patch_set":37,"id":"363908f5_3cf3d58e","line":49,"range":{"start_line":45,"start_character":0,"end_line":49,"end_character":13},"in_reply_to":"1f621f24_3f092295","updated":"2020-11-25 01:06:16.000000000","message":"done","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b116d66335bbef3099b7b7d7b2dc8e6fa77f50f9","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    - ✓ [3b]_"},{"line_number":58,"context_line":"    - ✓ [3c]_"},{"line_number":59,"context_line":"    - ✓ [3d]_"},{"line_number":60,"context_line":"  * - **XenServer**"},{"line_number":61,"context_line":"    - ✓ [4a]_ [4b]_"},{"line_number":62,"context_line":"    - ✓ [4c]_"},{"line_number":63,"context_line":"    - ✓ [4d]_"},{"line_number":64,"context_line":"    - ✓ [4e]_"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Minimum hypervisor version required:"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_beb38297","line":64,"range":{"start_line":60,"start_character":0,"end_line":64,"end_character":13},"updated":"2020-11-17 16:51:27.000000000","message":"This is now irrelevant: we removed XenServer support in Victoria","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"1649a4967f71e3dbc4c7fccbfb0d7d4b10daa696","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    - ✓ [3b]_"},{"line_number":58,"context_line":"    - ✓ [3c]_"},{"line_number":59,"context_line":"    - ✓ [3d]_"},{"line_number":60,"context_line":"  * - **XenServer**"},{"line_number":61,"context_line":"    - ✓ [4a]_ [4b]_"},{"line_number":62,"context_line":"    - ✓ [4c]_"},{"line_number":63,"context_line":"    - ✓ [4d]_"},{"line_number":64,"context_line":"    - ✓ [4e]_"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Minimum hypervisor version required:"}],"source_content_type":"text/x-rst","patch_set":37,"id":"40a472ce_86302918","line":64,"range":{"start_line":60,"start_character":0,"end_line":64,"end_character":13},"in_reply_to":"1f621f24_beb38297","updated":"2020-11-25 01:06:16.000000000","message":"done","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b116d66335bbef3099b7b7d7b2dc8e6fa77f50f9","unresolved":false,"context_lines":[{"line_number":69,"context_line":"* Hyper-V: Windows Hyper-V / Server 2012 R2: 6.3"},{"line_number":70,"context_line":"* QEMU (-KVM): 2.1"},{"line_number":71,"context_line":"* VMWare: 5.5"},{"line_number":72,"context_line":"* XenServer: 6.2.0"},{"line_number":73,"context_line":"* PowerVM: 4"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"As it can be observed from the Support Matrix above, live resize is supported"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_9eae862b","line":72,"range":{"start_line":72,"start_character":0,"end_line":72,"end_character":18},"updated":"2020-11-17 16:51:27.000000000","message":"ditto","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"1649a4967f71e3dbc4c7fccbfb0d7d4b10daa696","unresolved":false,"context_lines":[{"line_number":69,"context_line":"* Hyper-V: Windows Hyper-V / Server 2012 R2: 6.3"},{"line_number":70,"context_line":"* QEMU (-KVM): 2.1"},{"line_number":71,"context_line":"* VMWare: 5.5"},{"line_number":72,"context_line":"* XenServer: 6.2.0"},{"line_number":73,"context_line":"* PowerVM: 4"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"As it can be observed from the Support Matrix above, live resize is supported"}],"source_content_type":"text/x-rst","patch_set":37,"id":"e3f34f50_d09d9d58","line":72,"range":{"start_line":72,"start_character":0,"end_line":72,"end_character":18},"in_reply_to":"1f621f24_9eae862b","updated":"2020-11-25 01:06:16.000000000","message":"done","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b116d66335bbef3099b7b7d7b2dc8e6fa77f50f9","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"As it can be observed from the Support Matrix above, live resize is supported"},{"line_number":76,"context_line":"by all the hypervisors and this feature can be introduced in their respective"},{"line_number":77,"context_line":"virt Driver."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Resizing is meant to scale instances vertically. Using the \"pets vs cattle\""},{"line_number":80,"context_line":"metaphor, this feature is not meant for cattle, which can and should scale"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_fea97a23","line":77,"range":{"start_line":77,"start_character":5,"end_line":77,"end_character":11},"updated":"2020-11-17 16:51:27.000000000","message":"driver","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"1649a4967f71e3dbc4c7fccbfb0d7d4b10daa696","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"As it can be observed from the Support Matrix above, live resize is supported"},{"line_number":76,"context_line":"by all the hypervisors and this feature can be introduced in their respective"},{"line_number":77,"context_line":"virt Driver."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Resizing is meant to scale instances vertically. Using the \"pets vs cattle\""},{"line_number":80,"context_line":"metaphor, this feature is not meant for cattle, which can and should scale"}],"source_content_type":"text/x-rst","patch_set":37,"id":"9117ca38_c485596b","line":77,"range":{"start_line":77,"start_character":5,"end_line":77,"end_character":11},"in_reply_to":"1f621f24_fea97a23","updated":"2020-11-25 01:06:16.000000000","message":"done","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"78c65f60557476192a722c5dc63f631447ce1464","unresolved":false,"context_lines":[{"line_number":87,"context_line":"Proposed change"},{"line_number":88,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"This spec addresses live resize to a bigger flavor (live upsizing). Live"},{"line_number":91,"context_line":"downsizing could be added later on in a different spec."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Live resize will only be possible on the same host. If there are not enough"},{"line_number":94,"context_line":"resources available, live resize will not be performed."}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_be3d42c5","line":91,"range":{"start_line":90,"start_character":0,"end_line":91,"end_character":55},"updated":"2020-11-17 16:02:13.000000000","message":"It might be worth pointing out that downsizing isn\u0027t as widely supported by the underlying hypervisors as upsizing.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":87,"context_line":"Proposed change"},{"line_number":88,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"This spec addresses live resize to a bigger flavor (live upsizing). Live"},{"line_number":91,"context_line":"downsizing could be added later on in a different spec."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Live resize will only be possible on the same host. If there are not enough"},{"line_number":94,"context_line":"resources available, live resize will not be performed."}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_ff432aae","line":91,"range":{"start_line":90,"start_character":0,"end_line":91,"end_character":55},"in_reply_to":"1f621f24_be3d42c5","updated":"2020-11-18 13:12:55.000000000","message":"ya i think if we support that we should block that in the api.\nthat is what we and conculed the last time this came up due to the disk problems but i think its also true for cpus and memroy. \n\nthis has been rejected 2 before the last time at the dublin ptg i belive although in dublin it was being coupled with the dynamic flavour concept too.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":90,"context_line":"This spec addresses live resize to a bigger flavor (live upsizing). Live"},{"line_number":91,"context_line":"downsizing could be added later on in a different spec."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Live resize will only be possible on the same host. If there are not enough"},{"line_number":94,"context_line":"resources available, live resize will not be performed."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"There are a couple of concerns raised regarding the implementation of this"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_ff1ccac2","line":93,"range":{"start_line":93,"start_character":0,"end_line":93,"end_character":51},"updated":"2020-11-18 13:12:55.000000000","message":"then i thnk that kills the proposal.\n\nresize are by default only posible to other hosts.\nyou have to enable the same host resize config option to even allow the same host to be considerd and that was orginally only intended for testing. it was kept for small clouds and then used by vmware for there clustered hyperviors.\n\nfor the libvirt driver we could do a different host live resize via a live migate then a resize if needed.\nim not sure if we can do it in one operation via just a live migrate to an updated xml with more cpu/ram/disk that would be a nice optimisation if we could.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"1649a4967f71e3dbc4c7fccbfb0d7d4b10daa696","unresolved":false,"context_lines":[{"line_number":90,"context_line":"This spec addresses live resize to a bigger flavor (live upsizing). Live"},{"line_number":91,"context_line":"downsizing could be added later on in a different spec."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Live resize will only be possible on the same host. If there are not enough"},{"line_number":94,"context_line":"resources available, live resize will not be performed."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"There are a couple of concerns raised regarding the implementation of this"}],"source_content_type":"text/x-rst","patch_set":37,"id":"d1f8f2cb_bed98e88","line":93,"range":{"start_line":93,"start_character":0,"end_line":93,"end_character":51},"in_reply_to":"1f621f24_ff1ccac2","updated":"2020-11-25 01:06:16.000000000","message":"what I am concerning is that live migration might not be able to complete in the given time because vm could be busy at io or using memory which will cause live migration to fail.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f79557eb03de2ccff68fb41f0f5a4b7fc4099775","unresolved":true,"context_lines":[{"line_number":90,"context_line":"This spec addresses live resize to a bigger flavor (live upsizing). Live"},{"line_number":91,"context_line":"downsizing could be added later on in a different spec."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Live resize will only be possible on the same host. If there are not enough"},{"line_number":94,"context_line":"resources available, live resize will not be performed."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"There are a couple of concerns raised regarding the implementation of this"}],"source_content_type":"text/x-rst","patch_set":37,"id":"42997726_99584e80","line":93,"range":{"start_line":93,"start_character":0,"end_line":93,"end_character":51},"in_reply_to":"d1f8f2cb_bed98e88","updated":"2020-11-25 18:13:05.000000000","message":"in which case the live resize should fail.\nif we prefer the same host we can live migrate only when it does not fit","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":96,"context_line":"There are a couple of concerns raised regarding the implementation of this"},{"line_number":97,"context_line":"feature."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"**a. How can users know if they can use this feature?**"},{"line_number":100,"context_line":"The users will have to check if the live resize nova API is enabled"},{"line_number":101,"context_line":"or if they have the permission to use it through to be added ``live-resize``"},{"line_number":102,"context_line":"policy."}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_3f7c82ea","line":99,"range":{"start_line":99,"start_character":5,"end_line":99,"end_character":52},"updated":"2020-11-18 13:12:55.000000000","message":"well they could check for the new api microverion\n\nwe woudl havee to add a new paramter to the resize api call for this.\n\nthe question of if they are allowed by policy is a different one. i assume the intent is to make this callable by default by normla project members not just admins so they would get a 403 or 401 form the api if the policy was altered on the cloud","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"78c65f60557476192a722c5dc63f631447ce1464","unresolved":false,"context_lines":[{"line_number":107,"context_line":"rollback through live-downsize is not supported by all hypervisors and guests"},{"line_number":108,"context_line":"and it can fail. In order to address this concern, there are two solutions:"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  1. Only allow live resize to flavors having only one resource different"},{"line_number":111,"context_line":"  (e.g.: target flavor has the same amount of memory and vCPUs, but more disk)."},{"line_number":112,"context_line":"  This will allow us to live resize one resource at a time, and if the"},{"line_number":113,"context_line":"  operation fails, the resource will maintain its old value."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"  2. Save the VM state before live resize. This means that the VM will be"},{"line_number":116,"context_line":"  paused (in order to prevent data loss during rollback) and its state will be"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_fe617ad4","line":113,"range":{"start_line":110,"start_character":0,"end_line":113,"end_character":60},"updated":"2020-11-17 16:02:13.000000000","message":"I\u0027d be more in favour of this approach otherwise this isn\u0027t a live operation at all and the user should just resize offline.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"1649a4967f71e3dbc4c7fccbfb0d7d4b10daa696","unresolved":false,"context_lines":[{"line_number":107,"context_line":"rollback through live-downsize is not supported by all hypervisors and guests"},{"line_number":108,"context_line":"and it can fail. In order to address this concern, there are two solutions:"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  1. Only allow live resize to flavors having only one resource different"},{"line_number":111,"context_line":"  (e.g.: target flavor has the same amount of memory and vCPUs, but more disk)."},{"line_number":112,"context_line":"  This will allow us to live resize one resource at a time, and if the"},{"line_number":113,"context_line":"  operation fails, the resource will maintain its old value."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"  2. Save the VM state before live resize. This means that the VM will be"},{"line_number":116,"context_line":"  paused (in order to prevent data loss during rollback) and its state will be"}],"source_content_type":"text/x-rst","patch_set":37,"id":"e446c1dc_d31f63f5","line":113,"range":{"start_line":110,"start_character":0,"end_line":113,"end_character":60},"in_reply_to":"1f621f24_df53ce6b","updated":"2020-11-25 01:06:16.000000000","message":"I am wondering how to deal with exceptions. For example disks are scaled but adding memory failed, then do we rollback disks or do we keep the current flavor while some resource requirements are not met?","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":107,"context_line":"rollback through live-downsize is not supported by all hypervisors and guests"},{"line_number":108,"context_line":"and it can fail. In order to address this concern, there are two solutions:"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  1. Only allow live resize to flavors having only one resource different"},{"line_number":111,"context_line":"  (e.g.: target flavor has the same amount of memory and vCPUs, but more disk)."},{"line_number":112,"context_line":"  This will allow us to live resize one resource at a time, and if the"},{"line_number":113,"context_line":"  operation fails, the resource will maintain its old value."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"  2. Save the VM state before live resize. This means that the VM will be"},{"line_number":116,"context_line":"  paused (in order to prevent data loss during rollback) and its state will be"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_df53ce6b","line":113,"range":{"start_line":110,"start_character":0,"end_line":113,"end_character":60},"in_reply_to":"1f621f24_fe617ad4","updated":"2020-11-18 13:12:55.000000000","message":"i really dont like this. resize work betwen any flavor provided you are not resizing down disk. you can change any number of other resources so i really dont like requireign only one change in the flavors.\n\nwe are also inoring change in extra specs.\n\nwhat happens if we change the number of numa nodes or enable hugpeages or alter hugepage size?\n\ni think we should be blocking any live resizes that result in a cahnge to the instance numa toplogy request.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f79557eb03de2ccff68fb41f0f5a4b7fc4099775","unresolved":true,"context_lines":[{"line_number":107,"context_line":"rollback through live-downsize is not supported by all hypervisors and guests"},{"line_number":108,"context_line":"and it can fail. In order to address this concern, there are two solutions:"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  1. Only allow live resize to flavors having only one resource different"},{"line_number":111,"context_line":"  (e.g.: target flavor has the same amount of memory and vCPUs, but more disk)."},{"line_number":112,"context_line":"  This will allow us to live resize one resource at a time, and if the"},{"line_number":113,"context_line":"  operation fails, the resource will maintain its old value."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"  2. Save the VM state before live resize. This means that the VM will be"},{"line_number":116,"context_line":"  paused (in order to prevent data loss during rollback) and its state will be"}],"source_content_type":"text/x-rst","patch_set":37,"id":"5044ff32_6a48f8b6","line":113,"range":{"start_line":110,"start_character":0,"end_line":113,"end_character":60},"in_reply_to":"e446c1dc_d31f63f5","updated":"2020-11-25 18:13:05.000000000","message":"i guess we would have to do disks last in that case.\n\ni think it will be a really bad user and adm experice if you have to do multiple resizes.\nto the point where i would have to stongly consider if i would recommend we support this or not in our product.\n\nthats obviously a down stram consideration but having this work differently then other resize where any resouce can change is very concerning to me and i really do not think we should do this resouce by resouce.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":112,"context_line":"  This will allow us to live resize one resource at a time, and if the"},{"line_number":113,"context_line":"  operation fails, the resource will maintain its old value."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"  2. Save the VM state before live resize. This means that the VM will be"},{"line_number":116,"context_line":"  paused (in order to prevent data loss during rollback) and its state will be"},{"line_number":117,"context_line":"  saved as a snapshot. After the live resize succeeded, the VM will be unpaused"},{"line_number":118,"context_line":"  and the saved state removed. Due to this, the VM activity will be disrupted"},{"line_number":119,"context_line":"  for just a few seconds. If the live resize fails, the instance can be safely"},{"line_number":120,"context_line":"  be rolledback to the saved state and unpaused."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"This spec proposes to implement the first solution, as it is the safer one to"},{"line_number":123,"context_line":"implement with fewer error cases, and it does not imply disrupting the VM\u0027s"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_ff4a0aaa","line":120,"range":{"start_line":115,"start_character":3,"end_line":120,"end_character":48},"updated":"2020-11-18 13:12:55.000000000","message":"this is not live if we pasued so this is a differnt spec in my view","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"78c65f60557476192a722c5dc63f631447ce1464","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":129,"context_line":"  upsizing."},{"line_number":130,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":131,"context_line":"  contain the list of live-resizable resources supported by the guest. This is"},{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."},{"line_number":134,"context_line":"  e.g.: ``os_live_resize\u003dDISK_GB,MEMORY_MB,VCPU``"},{"line_number":135,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":136,"context_line":"  created with boot from volume."},{"line_number":137,"context_line":"* The target flavor for live resize might have a larger amount of memory or"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_fe8fba71","line":134,"range":{"start_line":130,"start_character":0,"end_line":134,"end_character":49},"updated":"2020-11-17 16:02:13.000000000","message":"We should call out that these map to placement resources classes?","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"* The tenant\u0027s quota must have sufficient available resources for live"},{"line_number":129,"context_line":"  upsizing."},{"line_number":130,"context_line":"* The image must contain a property called ``os_live_resize``, which will"},{"line_number":131,"context_line":"  contain the list of live-resizable resources supported by the guest. This is"},{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."},{"line_number":134,"context_line":"  e.g.: ``os_live_resize\u003dDISK_GB,MEMORY_MB,VCPU``"},{"line_number":135,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":136,"context_line":"  created with boot from volume."},{"line_number":137,"context_line":"* The target flavor for live resize might have a larger amount of memory or"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_bfd532ba","line":134,"range":{"start_line":130,"start_character":0,"end_line":134,"end_character":49},"in_reply_to":"1f621f24_fe8fba71","updated":"2020-11-18 13:12:55.000000000","message":"this should be hw_ not os_\n\nif this is just a list of resouce classes fine but we should not have quantitative info in the image metadata.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":133,"context_line":"  they support it only partly, for example, only live memory resize)."},{"line_number":134,"context_line":"  e.g.: ``os_live_resize\u003dDISK_GB,MEMORY_MB,VCPU``"},{"line_number":135,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":136,"context_line":"  created with boot from volume."},{"line_number":137,"context_line":"* The target flavor for live resize might have a larger amount of memory or"},{"line_number":138,"context_line":"  vCPUs, and it\u0027s up to the hypervisor to decide whether it\u0027s supported or not."},{"line_number":139,"context_line":"  If it\u0027s not supported, some kind of exception like \u0027LiveResizeNotAccepted\u0027"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_1fe386a6","line":136,"range":{"start_line":135,"start_character":2,"end_line":136,"end_character":32},"updated":"2020-11-18 13:12:55.000000000","message":"even for bfv is you have epmeral disks we cannot resize those down. bfv only replaces the root disk.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b116d66335bbef3099b7b7d7b2dc8e6fa77f50f9","unresolved":false,"context_lines":[{"line_number":141,"context_line":"* If target flavor have any different extra specs, it is up to virt driver to"},{"line_number":142,"context_line":"  decide whether it\u0027s allowed or not."},{"line_number":143,"context_line":"* The instance must have been created or cold resized with a flavor containing"},{"line_number":144,"context_line":"  the following extra specs: ``os:max_memory``, ``os:max_vcpus``,"},{"line_number":145,"context_line":"  ``os:max_disk``. These specs will set the upper limits for live resize."},{"line_number":146,"context_line":"  Without having an upper limit for a resource type, live resize will not be"},{"line_number":147,"context_line":"  allowed for that resource type. The new flavor must not have greater values"},{"line_number":148,"context_line":"  than the limits set by these flavor extra specs."}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_fe7e9aac","line":145,"range":{"start_line":144,"start_character":29,"end_line":145,"end_character":17},"updated":"2020-11-17 16:51:27.000000000","message":"these should be prefixed with \u0027hw\u0027 since they affect the virtual hardware, not the OS running on this hardware","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":141,"context_line":"* If target flavor have any different extra specs, it is up to virt driver to"},{"line_number":142,"context_line":"  decide whether it\u0027s allowed or not."},{"line_number":143,"context_line":"* The instance must have been created or cold resized with a flavor containing"},{"line_number":144,"context_line":"  the following extra specs: ``os:max_memory``, ``os:max_vcpus``,"},{"line_number":145,"context_line":"  ``os:max_disk``. These specs will set the upper limits for live resize."},{"line_number":146,"context_line":"  Without having an upper limit for a resource type, live resize will not be"},{"line_number":147,"context_line":"  allowed for that resource type. The new flavor must not have greater values"},{"line_number":148,"context_line":"  than the limits set by these flavor extra specs."}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_dfc90e5b","line":145,"range":{"start_line":144,"start_character":29,"end_line":145,"end_character":17},"in_reply_to":"1f621f24_fe7e9aac","updated":"2020-11-18 13:12:55.000000000","message":"correct OS is the wong namespace hyperv in particalar has been misusing it we should not continue to model hardware atibupte in the operating system nameapces.\n\nassuming they are renamed i guess this is ok\nthat raised a larger question regarding max values for \"resouces:xyz\" request but in general i dont think we shoudl use those directly in the flavor. thats a different conversation.\n\ni think we would also want at hw:max_hotplug_pci_devices option too to allow contol of the avaiable pci slots.\n\nthis is useful in general as currently this is contoled by a per host config option.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":146,"context_line":"  Without having an upper limit for a resource type, live resize will not be"},{"line_number":147,"context_line":"  allowed for that resource type. The new flavor must not have greater values"},{"line_number":148,"context_line":"  than the limits set by these flavor extra specs."},{"line_number":149,"context_line":"* Instances using NUMA topologies must have been created or cold resized with"},{"line_number":150,"context_line":"  a flavor containing the extra specs ``os:max_memory.N`` and"},{"line_number":151,"context_line":"  ``os:max_vcpus.N`` for every NUMA node N. This will allow the memory and"},{"line_number":152,"context_line":"  number of vCPUs to be live resized up to that value in those NUMA cells."},{"line_number":153,"context_line":"  Alternatively, for symmetric NUMA topologies, the default values for these"},{"line_number":154,"context_line":"  extra specs will be `` os:max_memory / N`` and ``os:max_vcpus / N``, where"},{"line_number":155,"context_line":"  N is the number of NUMA nodes in the instance\u0027s topology."},{"line_number":156,"context_line":"* If original flavor has a NUMA topology defined, the target flavor must have"},{"line_number":157,"context_line":"  the same number of NUMA nodes."},{"line_number":158,"context_line":"* If the instance uses huge pages, the target flavor\u0027s ``hw:mem_page_size``"},{"line_number":159,"context_line":"  extra_spec must be a multiple of the original flavor\u0027s value."},{"line_number":160,"context_line":"* If the original flavor uses dedicated CPUs, the target flavor must use"},{"line_number":161,"context_line":"  dedicated CPUs as well."},{"line_number":162,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":163,"context_line":"  enabled in image metadata."},{"line_number":164,"context_line":"* In order for the nova live-resize API call to be accepted, it must be enabled"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_df746ed3","line":161,"range":{"start_line":149,"start_character":0,"end_line":161,"end_character":25},"updated":"2020-11-18 13:12:55.000000000","message":"i would have to check but i dont think we can change the hugepage size on the fly\n\nin generall i would prefer to block any live resize that chagne the numa toplogy in any way. changing the numa toplogy request changes the hardware exposed to a guest and its toplogy so its very unlikely that even if qemu allowed it the guest would continue to function correctly.\n\nwe do this for rebuilds and we should just reuse that for live resize.\n\nthe os namesace is also not correct to use here.\n\nif we could support this it would have to have a hw:max_numa_nodes option. im pretty sure this type of runtime chagne is not supported in libvirt unless we use the memroy hotplug system which we dont currently.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":159,"context_line":"  extra_spec must be a multiple of the original flavor\u0027s value."},{"line_number":160,"context_line":"* If the original flavor uses dedicated CPUs, the target flavor must use"},{"line_number":161,"context_line":"  dedicated CPUs as well."},{"line_number":162,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":163,"context_line":"  enabled in image metadata."},{"line_number":164,"context_line":"* In order for the nova live-resize API call to be accepted, it must be enabled"},{"line_number":165,"context_line":"  in the ``/etc/nova/policy.json`` file (disabled by default)."},{"line_number":166,"context_line":""}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_7f49da89","line":163,"range":{"start_line":162,"start_character":0,"end_line":163,"end_character":28},"updated":"2020-11-18 13:12:55.000000000","message":"why? this i dont think makes sense it should not change but i dont think it needs to be enabled. is this so that cpus in the guest can be automatically onlined. if so the sure if they agent is enabeld but it should not be a requirement form the api perspectve.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":161,"context_line":"  dedicated CPUs as well."},{"line_number":162,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"},{"line_number":163,"context_line":"  enabled in image metadata."},{"line_number":164,"context_line":"* In order for the nova live-resize API call to be accepted, it must be enabled"},{"line_number":165,"context_line":"  in the ``/etc/nova/policy.json`` file (disabled by default)."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"nova API:"},{"line_number":168,"context_line":"  See `REST API impact` section."}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_5f2fbea6","line":165,"range":{"start_line":164,"start_character":1,"end_line":165,"end_character":62},"updated":"2020-11-18 13:12:55.000000000","message":"i would proably make this SYSTEM_ADMIN_OR_PROJECT_ADMIN by default. you dont disable things in policy.json by the way so when you said disabled i assume you ment admin only.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"78c65f60557476192a722c5dc63f631447ce1464","unresolved":false,"context_lines":[{"line_number":180,"context_line":"nova objects:"},{"line_number":181,"context_line":"  See `Data model impact` section."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"nova ConductorManager:"},{"line_number":184,"context_line":"  The ``live_resize`` conductor task will be added."},{"line_number":185,"context_line":"  Will need to set force_hosts/nodes for the request spec and run the new"},{"line_number":186,"context_line":"  flavor through the scheduler to validate the flavor on the current"},{"line_number":187,"context_line":"  instance.host to make sure it\u0027s OK before casting to the compute for the"},{"line_number":188,"context_line":"  live resize."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"nova ComputeManager:"},{"line_number":191,"context_line":"  New methods will have to be implemented:"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_fe521add","line":188,"range":{"start_line":183,"start_character":0,"end_line":188,"end_character":14},"updated":"2020-11-17 16:02:13.000000000","message":"Will this include claiming the additional resources in Placement? Will this be a completely new claim encompassing everything requested by the flavor before throwing away the previous etc.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":180,"context_line":"nova objects:"},{"line_number":181,"context_line":"  See `Data model impact` section."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"nova ConductorManager:"},{"line_number":184,"context_line":"  The ``live_resize`` conductor task will be added."},{"line_number":185,"context_line":"  Will need to set force_hosts/nodes for the request spec and run the new"},{"line_number":186,"context_line":"  flavor through the scheduler to validate the flavor on the current"},{"line_number":187,"context_line":"  instance.host to make sure it\u0027s OK before casting to the compute for the"},{"line_number":188,"context_line":"  live resize."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"nova ComputeManager:"},{"line_number":191,"context_line":"  New methods will have to be implemented:"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_52fdf506","line":188,"range":{"start_line":183,"start_character":0,"end_line":188,"end_character":14},"in_reply_to":"1f621f24_fe521add","updated":"2020-11-18 13:12:55.000000000","message":"we should jsut reuse the current move claims and doble the allocation using the migration uuid as we do with a normal resize. im really not on board with only supporting this to the same host. i would be more ok with if if resizes were allowed to the same host by default and if we prefered the same host when possibel but we dont do either.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"78c65f60557476192a722c5dc63f631447ce1464","unresolved":false,"context_lines":[{"line_number":190,"context_line":"nova ComputeManager:"},{"line_number":191,"context_line":"  New methods will have to be implemented:"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"  * ``check_instance_live_resize``: will be called through RPC by the API."},{"line_number":194,"context_line":"    It will check whether the hypervisor is able to perform this feature by"},{"line_number":195,"context_line":"    checking its capabilities and will call the virt driver to ask the"},{"line_number":196,"context_line":"    instance\u0027s hypervisor if live resizing it to the target flavor is supported"},{"line_number":197,"context_line":"    or not."},{"line_number":198,"context_line":"  * ``live_resize_instance``: will be called through RPC by the conductor."},{"line_number":199,"context_line":"     This feature has a significantly different behaviour than the cold"},{"line_number":200,"context_line":"     migration."}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_5ecd0eb5","line":197,"range":{"start_line":193,"start_character":0,"end_line":197,"end_character":11},"updated":"2020-11-17 16:02:13.000000000","message":"We shouldn\u0027t need to RPC to the compute to check that it\u0027s reporting the trait, couldn\u0027t we roll the virt driver check into ``live_resize_instance``?","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":190,"context_line":"nova ComputeManager:"},{"line_number":191,"context_line":"  New methods will have to be implemented:"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"  * ``check_instance_live_resize``: will be called through RPC by the API."},{"line_number":194,"context_line":"    It will check whether the hypervisor is able to perform this feature by"},{"line_number":195,"context_line":"    checking its capabilities and will call the virt driver to ask the"},{"line_number":196,"context_line":"    instance\u0027s hypervisor if live resizing it to the target flavor is supported"},{"line_number":197,"context_line":"    or not."},{"line_number":198,"context_line":"  * ``live_resize_instance``: will be called through RPC by the conductor."},{"line_number":199,"context_line":"     This feature has a significantly different behaviour than the cold"},{"line_number":200,"context_line":"     migration."}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_12341dde","line":197,"range":{"start_line":193,"start_character":0,"end_line":197,"end_character":11},"in_reply_to":"1f621f24_5ecd0eb5","updated":"2020-11-18 13:12:55.000000000","message":"we can just check the trait form the conductor via a placemnt call and we can also require it on the sechduler request.\n\nso i dont think this is neded. we have other caseses where we check placment for this support i think cross cell resize might be one example but i cant rememebr.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":226,"context_line":"Data model impact"},{"line_number":227,"context_line":"-----------------"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"The ``os_live_resize`` field will be added to the ``ImageMetaProps``."},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"The ``live-resize`` value will be added to the ``Migration`` object\u0027s"},{"line_number":232,"context_line":"``migration_type`` enumeration."}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_3250390b","line":229,"range":{"start_line":229,"start_character":6,"end_line":229,"end_character":20},"updated":"2020-11-18 13:12:55.000000000","message":"hw_live_resize","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"78c65f60557476192a722c5dc63f631447ce1464","unresolved":false,"context_lines":[{"line_number":258,"context_line":"Security impact"},{"line_number":259,"context_line":"---------------"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"The ``os_compute_api:servers:live_resize`` policy rule will disabled by"},{"line_number":262,"context_line":"default."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Upgrade impact"},{"line_number":265,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_9e704674","line":262,"range":{"start_line":261,"start_character":0,"end_line":262,"end_character":8},"updated":"2020-11-17 16:02:13.000000000","message":"What\u0027s the justification for leaving this disabled by default?","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":258,"context_line":"Security impact"},{"line_number":259,"context_line":"---------------"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"The ``os_compute_api:servers:live_resize`` policy rule will disabled by"},{"line_number":262,"context_line":"default."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Upgrade impact"},{"line_number":265,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_1249bd5f","line":262,"range":{"start_line":261,"start_character":0,"end_line":262,"end_character":8},"in_reply_to":"1f621f24_9e704674","updated":"2020-11-18 13:12:55.000000000","message":"again i assume admin only is what they ment by disabled we should not ahve any api disabled by default.\n\ni think SYSTEM_ADMIN_OR_PROJECT_ADMIN is the correct policy defaults","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":264,"context_line":"Upgrade impact"},{"line_number":265,"context_line":"--------------"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"None"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"Notifications impact"},{"line_number":270,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_5274d59c","line":267,"range":{"start_line":267,"start_character":0,"end_line":267,"end_character":4},"updated":"2020-11-18 13:12:55.000000000","message":"for upgrades we should call out that it woudl only be supported if you are fully upgraded to Wallaby","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a60ca2b8bbad51370949ce7c65e12dfba067bdf4","unresolved":false,"context_lines":[{"line_number":274,"context_line":"Other end user impact"},{"line_number":275,"context_line":"---------------------"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"The guest OS must have a mechanism to detect when the disk size changes in"},{"line_number":278,"context_line":"order to do a ``growroot`` style operation. At the moment, cloud-init and"},{"line_number":279,"context_line":"cloudbase-init performs this check on boot."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"Performance Impact"},{"line_number":282,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_12625dd9","line":279,"range":{"start_line":277,"start_character":0,"end_line":279,"end_character":43},"updated":"2020-11-18 13:12:55.000000000","message":"well they dont have too. this can be done by a higher level orchestrator that invoked the resize like a vnfm.","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b116d66335bbef3099b7b7d7b2dc8e6fa77f50f9","unresolved":false,"context_lines":[{"line_number":417,"context_line":".. [3d] `PCI hotplug`__"},{"line_number":418,"context_line":"__ https://blog.solori.net/2009/12/05/vsphere-hardware-version-7-and-hot-plug/"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"**Xen**:"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":".. [4a] `VDI resize_online documentation`__"},{"line_number":423,"context_line":"__ http://docs.vmd.citrix.com/XenServer/5.5.0/1.0/en_gb/api/docs/html/API/Classes/VDI/Explicit/resize_online.html"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":".. [4b] `Live disk resize discussion`__"},{"line_number":426,"context_line":"__ http://discussions.citrix.com/topic/293389-resize-a-xenserver-windows-vm-virtual-disk-without-shutdown/"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":".. [4c] `Live memory resize via DMC (Dynamic Memory Control)`__"},{"line_number":429,"context_line":"__ http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/reference.html#ch_dynamic_memory_control"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":".. [4d] `VM vCPU hotplug for Linux guests`__"},{"line_number":432,"context_line":"__ http://docs.vmd.citrix.com/XenServer/6.2.0/1.0/en_gb/reference.html#cli-xe-commands_vm-vcpu-hotplug"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":".. [4e] `PCI hotplug`__"},{"line_number":435,"context_line":"__ http://wiki.xen.org/wiki/Xen_PCI_Passthrough#Hotplug"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":".. [5] `Newton Nova Midcycle discussion about live-resize`__"},{"line_number":438,"context_line":"__ https://etherpad.openstack.org/p/nova-newton-midcycle"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":".. [6] `Expose host capabilities spec`__"},{"line_number":441,"context_line":"__ https://blueprints.launchpad.net/nova/+spec/expose-host-capabilities"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":".. [7] `Nova API discoverable policy`__"},{"line_number":444,"context_line":"__ https://review.openstack.org/#/c/363584/"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"History"},{"line_number":447,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_3e33f215","line":444,"range":{"start_line":420,"start_character":0,"end_line":444,"end_character":43},"updated":"2020-11-17 16:51:27.000000000","message":"drop","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b116d66335bbef3099b7b7d7b2dc8e6fa77f50f9","unresolved":false,"context_lines":[{"line_number":451,"context_line":""},{"line_number":452,"context_line":"   * - Release Name"},{"line_number":453,"context_line":"     - Description"},{"line_number":454,"context_line":"   * - Stein"},{"line_number":455,"context_line":"     - Introduced"}],"source_content_type":"text/x-rst","patch_set":37,"id":"1f621f24_1e36f603","line":454,"range":{"start_line":454,"start_character":7,"end_line":454,"end_character":12},"updated":"2020-11-17 16:51:27.000000000","message":"Wallaby","commit_id":"218cdeda768b3263ecd1ceeaa647d95e873877fa"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3408a47bd24c1d5d99878c78a973e4cacdebc477","unresolved":true,"context_lines":[{"line_number":103,"context_line":"rollback through live-downsize is not supported by all hypervisors and guests"},{"line_number":104,"context_line":"and it can fail. In order to address this concern, there are two solutions:"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"  1. Allow changing flavors as long as prerequisites are met. In order to "},{"line_number":107,"context_line":"  make it more robust, order scaling by memory, disk and cpu. If operation fails,"},{"line_number":108,"context_line":"  flavor will be rollback to old one."},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":38,"id":"82238075_0fd3009f","line":106,"range":{"start_line":106,"start_character":73,"end_line":106,"end_character":74},"updated":"2020-12-01 13:11:40.000000000","message":"nit: trailing whitespace","commit_id":"60d938b3cc8cdc408b9e52860c5649c876552a65"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c8a50188e1f196e7c0c3fca0305686a0e9edf6e5","unresolved":true,"context_lines":[{"line_number":104,"context_line":"and it can fail. In order to address this concern, there are two solutions:"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"  1. Allow changing flavors as long as prerequisites are met. In order to "},{"line_number":107,"context_line":"  make it more robust, order scaling by memory, disk and cpu. If operation fails,"},{"line_number":108,"context_line":"  flavor will be rollback to old one."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  2. Save the VM state before live resize. This means that the VM will be"}],"source_content_type":"text/x-rst","patch_set":38,"id":"8b26d8de_4e432056","line":107,"range":{"start_line":107,"start_character":40,"end_line":107,"end_character":60},"updated":"2020-11-25 18:17:39.000000000","message":"this should be memory cpus and disk last.\nideally the memroy and cpus shoudl be done atomically together and the disk should be done only if they succeed, we shoudl check that we can expand the disk first however before updating the vm for cpus and ram.","commit_id":"60d938b3cc8cdc408b9e52860c5649c876552a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3408a47bd24c1d5d99878c78a973e4cacdebc477","unresolved":true,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"  1. Allow changing flavors as long as prerequisites are met. In order to "},{"line_number":107,"context_line":"  make it more robust, order scaling by memory, disk and cpu. If operation fails,"},{"line_number":108,"context_line":"  flavor will be rollback to old one."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  2. Save the VM state before live resize. This means that the VM will be"},{"line_number":111,"context_line":"  paused (in order to prevent data loss during rollback) and its state will be"}],"source_content_type":"text/x-rst","patch_set":38,"id":"e673ba9e_f6ab058e","line":108,"updated":"2020-12-01 13:11:40.000000000","message":"Does live resize uses the scheduler / placement? If yes then the failure case discussed here can only happen if the resource management is incorrect in nova or placement. \nOr is there other non resource allocation related error cases?","commit_id":"60d938b3cc8cdc408b9e52860c5649c876552a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3408a47bd24c1d5d99878c78a973e4cacdebc477","unresolved":true,"context_lines":[{"line_number":117,"context_line":"**c. How to deal with CPU topologies?**"},{"line_number":118,"context_line":"For libvirt, ``setvcpu`` does not allow to specify topology related parameters"},{"line_number":119,"context_line":"and will be default to numa node 0. After hard reboot, users might see cpu on different"},{"line_number":120,"context_line":"numa nodes which could be confusing."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"This spec proposes to implement the first solution, as it is the safer one to"}],"source_content_type":"text/x-rst","patch_set":38,"id":"cb8f5bb9_e50d2283","line":120,"updated":"2020-12-01 13:11:40.000000000","message":"Does it mean that the live resize can only allocate resources on numa 0? This feels like a big limitation at least for the libvirt case.","commit_id":"60d938b3cc8cdc408b9e52860c5649c876552a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3408a47bd24c1d5d99878c78a973e4cacdebc477","unresolved":true,"context_lines":[{"line_number":133,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":134,"context_line":"  they support it only partly, for example, only live memory resize)."},{"line_number":135,"context_line":"  e.g.: ``hw_live_resize\u003dDISK_GB,MEMORY_MB,VCPU``"},{"line_number":136,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":137,"context_line":"  created with boot from volume."},{"line_number":138,"context_line":"* The target flavor for live resize might have a larger amount of memory or"},{"line_number":139,"context_line":"  vCPUs, and it\u0027s up to the hypervisor to decide whether it\u0027s supported or not."},{"line_number":140,"context_line":"  If it\u0027s not supported, some kind of exception like \u0027LiveResizeNotAccepted\u0027"}],"source_content_type":"text/x-rst","patch_set":38,"id":"351a9d64_7c4370fd","line":137,"range":{"start_line":136,"start_character":2,"end_line":137,"end_character":32},"updated":"2020-12-01 13:11:40.000000000","message":"So disk cannot be increased for a boot from volume VM. But does live-resize of other resource still supported for bfv VMs?","commit_id":"60d938b3cc8cdc408b9e52860c5649c876552a65"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"0de3ea98ffa65097205855ad6ff3d835283786a9","unresolved":true,"context_lines":[{"line_number":133,"context_line":"  mandatory, as not all guests support live resize, especially older OSes (or"},{"line_number":134,"context_line":"  they support it only partly, for example, only live memory resize)."},{"line_number":135,"context_line":"  e.g.: ``hw_live_resize\u003dDISK_GB,MEMORY_MB,VCPU``"},{"line_number":136,"context_line":"* The given flavor must have a larger or equal disk, unless the instance was"},{"line_number":137,"context_line":"  created with boot from volume."},{"line_number":138,"context_line":"* The target flavor for live resize might have a larger amount of memory or"},{"line_number":139,"context_line":"  vCPUs, and it\u0027s up to the hypervisor to decide whether it\u0027s supported or not."},{"line_number":140,"context_line":"  If it\u0027s not supported, some kind of exception like \u0027LiveResizeNotAccepted\u0027"}],"source_content_type":"text/x-rst","patch_set":38,"id":"7eb628d6_357ba93b","line":137,"range":{"start_line":136,"start_character":2,"end_line":137,"end_character":32},"in_reply_to":"351a9d64_7c4370fd","updated":"2020-12-22 04:03:53.000000000","message":"this draft will forbid pci device changing in the flavor property","commit_id":"60d938b3cc8cdc408b9e52860c5649c876552a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3408a47bd24c1d5d99878c78a973e4cacdebc477","unresolved":true,"context_lines":[{"line_number":146,"context_line":"  ``hw:max_disk``. These specs will set the upper limits for live resize."},{"line_number":147,"context_line":"  Without having an upper limit for a resource type, live resize will not be"},{"line_number":148,"context_line":"  allowed for that resource type. The new flavor must not have greater values"},{"line_number":149,"context_line":"  than the limits set by these flavor extra specs."},{"line_number":150,"context_line":"* Instances using NUMA topologies must have been created or cold resized with"},{"line_number":151,"context_line":"  a flavor containing the extra specs ``hw:max_memory.N`` and"},{"line_number":152,"context_line":"  ``hw:max_vcpus.N`` for every NUMA node N. This will allow the memory and"}],"source_content_type":"text/x-rst","patch_set":38,"id":"ba2c9aae_f03f10ff","line":149,"updated":"2020-12-01 13:11:40.000000000","message":"Why we need a limit? Is it due to some technical limitation in the virt layer?","commit_id":"60d938b3cc8cdc408b9e52860c5649c876552a65"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"0de3ea98ffa65097205855ad6ff3d835283786a9","unresolved":true,"context_lines":[{"line_number":146,"context_line":"  ``hw:max_disk``. These specs will set the upper limits for live resize."},{"line_number":147,"context_line":"  Without having an upper limit for a resource type, live resize will not be"},{"line_number":148,"context_line":"  allowed for that resource type. The new flavor must not have greater values"},{"line_number":149,"context_line":"  than the limits set by these flavor extra specs."},{"line_number":150,"context_line":"* Instances using NUMA topologies must have been created or cold resized with"},{"line_number":151,"context_line":"  a flavor containing the extra specs ``hw:max_memory.N`` and"},{"line_number":152,"context_line":"  ``hw:max_vcpus.N`` for every NUMA node N. This will allow the memory and"}],"source_content_type":"text/x-rst","patch_set":38,"id":"8cc85157_1654c18b","line":149,"in_reply_to":"ba2c9aae_f03f10ff","updated":"2020-12-22 04:03:53.000000000","message":"because libvirt/qemu needs to define a max value...","commit_id":"60d938b3cc8cdc408b9e52860c5649c876552a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3408a47bd24c1d5d99878c78a973e4cacdebc477","unresolved":true,"context_lines":[{"line_number":151,"context_line":"  a flavor containing the extra specs ``hw:max_memory.N`` and"},{"line_number":152,"context_line":"  ``hw:max_vcpus.N`` for every NUMA node N. This will allow the memory and"},{"line_number":153,"context_line":"  number of vCPUs to be live resized up to that value in those NUMA cells."},{"line_number":154,"context_line":"  Alternatively, for symmetric NUMA topologies, the default values for these"},{"line_number":155,"context_line":"  extra specs will be `` hw:max_memory / N`` and ``hw:max_vcpus / N``, where"},{"line_number":156,"context_line":"  N is the number of NUMA nodes in the instance\u0027s topology."},{"line_number":157,"context_line":"* If original flavor has a NUMA topology defined, the target flavor must have"},{"line_number":158,"context_line":"  the same number of NUMA nodes."},{"line_number":159,"context_line":"* If the instance uses huge pages, the target flavor\u0027s ``hw:mem_page_size``"}],"source_content_type":"text/x-rst","patch_set":38,"id":"5b740912_3a7922ad","line":156,"range":{"start_line":154,"start_character":2,"end_line":156,"end_character":59},"updated":"2020-12-01 13:11:40.000000000","message":"If hw:numa_nodes\u003dN N\u003e1 but no other numa related extra spec is defined then you can assume an equal splitting between N nodes.","commit_id":"60d938b3cc8cdc408b9e52860c5649c876552a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3408a47bd24c1d5d99878c78a973e4cacdebc477","unresolved":true,"context_lines":[{"line_number":156,"context_line":"  N is the number of NUMA nodes in the instance\u0027s topology."},{"line_number":157,"context_line":"* If original flavor has a NUMA topology defined, the target flavor must have"},{"line_number":158,"context_line":"  the same number of NUMA nodes."},{"line_number":159,"context_line":"* If the instance uses huge pages, the target flavor\u0027s ``hw:mem_page_size``"},{"line_number":160,"context_line":"  extra_spec must be a multiple of the original flavor\u0027s value."},{"line_number":161,"context_line":"* If the original flavor uses dedicated CPUs, the target flavor must use"},{"line_number":162,"context_line":"  dedicated CPUs as well."},{"line_number":163,"context_line":"* If the hypervisor is qemu or qemu-kvm, the qemu-guest-agent should also be"}],"source_content_type":"text/x-rst","patch_set":38,"id":"8f1fd293_ab590e5d","line":160,"range":{"start_line":159,"start_character":2,"end_line":160,"end_character":63},"updated":"2020-12-01 13:11:40.000000000","message":"This suggest to me that live resize supports moving from 4k pages to 1G pages. I\u0027m surprised that this can be done without disturbance in the VM as I imagine it requires a memcopy on the hypervisor.","commit_id":"60d938b3cc8cdc408b9e52860c5649c876552a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3408a47bd24c1d5d99878c78a973e4cacdebc477","unresolved":true,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"nova ConductorManager:"},{"line_number":185,"context_line":"  The ``live_resize`` conductor task will be added."},{"line_number":186,"context_line":"  Will need to set force_hosts/nodes for the request spec and run the new"},{"line_number":187,"context_line":"  flavor through the scheduler to validate the flavor on the current"},{"line_number":188,"context_line":"  instance.host to make sure it\u0027s OK before casting to the compute for the"},{"line_number":189,"context_line":"  live resize."},{"line_number":190,"context_line":""}],"source_content_type":"text/x-rst","patch_set":38,"id":"092f581f_3bc59da7","line":187,"range":{"start_line":186,"start_character":62,"end_line":187,"end_character":30},"updated":"2020-12-01 13:11:40.000000000","message":"+1","commit_id":"60d938b3cc8cdc408b9e52860c5649c876552a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3408a47bd24c1d5d99878c78a973e4cacdebc477","unresolved":true,"context_lines":[{"line_number":255,"context_line":"an exception will be raised and a HTTP response with status code 400"},{"line_number":256,"context_line":"(Bad Request) will be returned. Otherwise, a HTTP response with status code"},{"line_number":257,"context_line":"202 (Accepted) will be returned."},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"Security impact"},{"line_number":260,"context_line":"---------------"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-rst","patch_set":38,"id":"0187b004_f0e722dd","line":258,"updated":"2020-12-01 13:11:40.000000000","message":"Does live resize uses VERIFY_RESIZE state? or the VM goes to ACTIVE immediately after the resize is done.","commit_id":"60d938b3cc8cdc408b9e52860c5649c876552a65"},{"author":{"_account_id":29071,"name":"norman shen","email":"yshxxsjt715@gmail.com","username":"ushen"},"change_message_id":"0de3ea98ffa65097205855ad6ff3d835283786a9","unresolved":true,"context_lines":[{"line_number":255,"context_line":"an exception will be raised and a HTTP response with status code 400"},{"line_number":256,"context_line":"(Bad Request) will be returned. Otherwise, a HTTP response with status code"},{"line_number":257,"context_line":"202 (Accepted) will be returned."},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"Security impact"},{"line_number":260,"context_line":"---------------"},{"line_number":261,"context_line":""}],"source_content_type":"text/x-rst","patch_set":38,"id":"f0160af8_8b357b58","line":258,"in_reply_to":"0187b004_f0e722dd","updated":"2020-12-22 04:03:53.000000000","message":"I think it might not be necessary to have this intermediate state...","commit_id":"60d938b3cc8cdc408b9e52860c5649c876552a65"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4e27f07ec221d765c0fb1274d68076dbaa3018bd","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":41,"id":"0e5cac5d_276bef4e","updated":"2021-04-14 12:22:44.000000000","message":"please propose this against the specs/xena/approved directory.","commit_id":"fbfce0d812740831b7ba6743d02b10c74fa75ef5"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"441cc2c0fe14b3af75be7c38e3ba23cea7f50c9c","unresolved":true,"context_lines":[{"line_number":346,"context_line":"Dependencies"},{"line_number":347,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"Previously as per the discussion at the Newton Nova Midcycle [5]_,"},{"line_number":350,"context_line":"this blueprint depends on the host capability blueprint [6]_ and"},{"line_number":351,"context_line":"the discoverable API endpoints blueprint [7]_, so users can determine"},{"line_number":352,"context_line":"whether the live-resize action is available."}],"source_content_type":"text/x-rst","patch_set":41,"id":"052db770_c7d61e90","line":349,"range":{"start_line":349,"start_character":61,"end_line":349,"end_character":65},"updated":"2020-12-25 05:44:40.000000000","message":"Missing reference.","commit_id":"fbfce0d812740831b7ba6743d02b10c74fa75ef5"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"441cc2c0fe14b3af75be7c38e3ba23cea7f50c9c","unresolved":true,"context_lines":[{"line_number":347,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"Previously as per the discussion at the Newton Nova Midcycle [5]_,"},{"line_number":350,"context_line":"this blueprint depends on the host capability blueprint [6]_ and"},{"line_number":351,"context_line":"the discoverable API endpoints blueprint [7]_, so users can determine"},{"line_number":352,"context_line":"whether the live-resize action is available."},{"line_number":353,"context_line":""}],"source_content_type":"text/x-rst","patch_set":41,"id":"624e9947_faab6721","line":350,"range":{"start_line":350,"start_character":56,"end_line":350,"end_character":61},"updated":"2020-12-25 05:44:40.000000000","message":"ditto","commit_id":"fbfce0d812740831b7ba6743d02b10c74fa75ef5"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"441cc2c0fe14b3af75be7c38e3ba23cea7f50c9c","unresolved":true,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"Previously as per the discussion at the Newton Nova Midcycle [5]_,"},{"line_number":350,"context_line":"this blueprint depends on the host capability blueprint [6]_ and"},{"line_number":351,"context_line":"the discoverable API endpoints blueprint [7]_, so users can determine"},{"line_number":352,"context_line":"whether the live-resize action is available."},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"As for now, based on discussion at"}],"source_content_type":"text/x-rst","patch_set":41,"id":"29a82075_5cccdf36","line":351,"range":{"start_line":351,"start_character":41,"end_line":351,"end_character":46},"updated":"2020-12-25 05:44:40.000000000","message":"ditto","commit_id":"fbfce0d812740831b7ba6743d02b10c74fa75ef5"}]}
