)]}'
{"specs/juno/hot-resize.rst":[{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"b064c629c52aa7cf8bcb14b12a3b7d37afbfdade","unresolved":false,"context_lines":[{"line_number":164,"context_line":"     after initialization. It\u0027s not convenient."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"   So, should we need to remove the \u0027max_vcpus_limit\u0027 restriction in \"resize\"?"},{"line_number":167,"context_line":"   "},{"line_number":168,"context_line":"   * If item value(like \u0027vcpus\u0027) of new flavor in \"resize\" is greater than the"},{"line_number":169,"context_line":"     \u0027max_vcpus_limit\u0027 in DB, we change the DB value to this new value,"},{"line_number":170,"context_line":"     instead raising an exception."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5adbc538_f5ab33d4","line":167,"updated":"2014-05-26 02:46:54.000000000","message":"extra space","commit_id":"486db148e26824993ab56e0e735cbf040ab3fd99"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"b064c629c52aa7cf8bcb14b12a3b7d37afbfdade","unresolved":false,"context_lines":[{"line_number":236,"context_line":"    }"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"  * The \u0027task_states\u0027 will be \u0027LIVE_RESIZING\u0027/\u0027MIGRATING\u0027."},{"line_number":239,"context_line":"  "},{"line_number":240,"context_line":"    * The \u0027LIVE_RESIZING\u0027 means the request is sent to compute node to execute"},{"line_number":241,"context_line":"      the real-logic."},{"line_number":242,"context_line":"    * The \u0027MIGRATING\u0027 means the original host doesn\u0027t have enough resources;"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5adbc538_15b97f2e","line":239,"updated":"2014-05-26 02:46:54.000000000","message":"ditto","commit_id":"486db148e26824993ab56e0e735cbf040ab3fd99"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"84e28d560a7084d12c8b3ce4a3680f9144474b16","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Cpu hot-add feature has been supported by qemu(since version 1.6.2)"},{"line_number":20,"context_line":"and libvirt(since version 1.2)."},{"line_number":21,"context_line":"VMware can support cpu-hot-add/remove, mem-hot-add/remove."},{"line_number":22,"context_line":"It will be implemented if this function merged."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Problem description"},{"line_number":25,"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":4,"id":"3ae8d1ca_c71e3463","line":22,"updated":"2014-05-29 11:38:53.000000000","message":"Does \u0027live resize\u0027 works for image resize?","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"017a0ec7f038eee2cce96798ebb4f59bf12e75b5","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Cpu hot-add feature has been supported by qemu(since version 1.6.2)"},{"line_number":20,"context_line":"and libvirt(since version 1.2)."},{"line_number":21,"context_line":"VMware can support cpu-hot-add/remove, mem-hot-add/remove."},{"line_number":22,"context_line":"It will be implemented if this function merged."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Problem description"},{"line_number":25,"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":4,"id":"1ae5cdf2_a5c40660","line":22,"in_reply_to":"3ae8d1ca_c71e3463","updated":"2014-06-09 07:13:13.000000000","message":"Hi Alex, I don\u0027t the exact meaning of the \u0027image resize\u0027 here.. So could you please explain it firstly?","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"5cdd680dabaa2c3e66a7281645a846b304fa1b5d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"There is no current API that can resize servers online."},{"line_number":28,"context_line":"The original resize API is equal to cold-resize, or offline resize."},{"line_number":29,"context_line":"That\u0027s not convenient for end users."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"The use cases that are driving this API extension are derived from a user\u0027s"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_ed117154","line":28,"updated":"2014-06-17 12:04:12.000000000","message":"The (current) resize API does not *explicitly* explain HOW the resize is done (see [1] and [2]). If a *new* API endpoint is added, the implementation details would be made public. My assumption is that an end user does not really care about HOW it is implemented. Would it make sense to let each driver handle the resize in its own possible way (hot-resize, cold-resize)?\n\n[1] API reference: http://developer.openstack.org/api-ref-compute-v2.html#compute_server-actions\n[2] End user guide: CLI: http://docs.openstack.org/user-guide/content/nova_cli_resize.html","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":9060,"name":"Mike Dorman","email":"dorm@dorm.org","username":"gd-mdorman"},"change_message_id":"adec22e68ea6ea2dd13d14bdfaf071c4e9e5b6af","unresolved":false,"context_lines":[{"line_number":39,"context_line":"   to indicate(Implemented in Havana [1])."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"   Image without qga in libvirt will be raised \u0027NotSupportedException\u0027"},{"line_number":42,"context_line":"   for \"live-resize\"."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"1. Add a new key-value pair in image\u0027s metadata like {\u0027max_vcpus_limit\u0027:\u003cint\u003e}."},{"line_number":45,"context_line":"   This value will be effective in spawn/rebuild/rescue/resize/live-resize."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ae8d1ca_50879c61","line":42,"updated":"2014-05-27 03:30:48.000000000","message":"What happens if the image has hw_qemu_guest_agent set, but the end user disables or otherwise stops the agent within the guest?  Will live-resize call somehow check to see if the qga is alive before doing the resize?  If not, then the results will be the same as alternative #1 (line 92) below.  Is this a problem?  Maybe we don\u0027t care if the user is shooting themselves in the foot by disabling the agent?","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"0577b21ca8dd53b97347d34d193c29e096c34af8","unresolved":false,"context_lines":[{"line_number":39,"context_line":"   to indicate(Implemented in Havana [1])."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"   Image without qga in libvirt will be raised \u0027NotSupportedException\u0027"},{"line_number":42,"context_line":"   for \"live-resize\"."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"1. Add a new key-value pair in image\u0027s metadata like {\u0027max_vcpus_limit\u0027:\u003cint\u003e}."},{"line_number":45,"context_line":"   This value will be effective in spawn/rebuild/rescue/resize/live-resize."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ae8d1ca_386ffdfe","line":42,"in_reply_to":"3ae8d1ca_223478dd","updated":"2014-05-29 09:10:56.000000000","message":"I agree with you. :)","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"84e28d560a7084d12c8b3ce4a3680f9144474b16","unresolved":false,"context_lines":[{"line_number":39,"context_line":"   to indicate(Implemented in Havana [1])."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"   Image without qga in libvirt will be raised \u0027NotSupportedException\u0027"},{"line_number":42,"context_line":"   for \"live-resize\"."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"1. Add a new key-value pair in image\u0027s metadata like {\u0027max_vcpus_limit\u0027:\u003cint\u003e}."},{"line_number":45,"context_line":"   This value will be effective in spawn/rebuild/rescue/resize/live-resize."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ae8d1ca_814c1c44","line":42,"in_reply_to":"3ae8d1ca_386ffdfe","updated":"2014-05-29 11:38:53.000000000","message":"Emm...I guess Qemu guest agent isn\u0027t the only way to online cpu automatically . The guest os also can add udev script to online the cpu(there is example: http://wiki.qemu.org/Features/CPUHotplug). So maybe we needn\u0027t depend on qemu guest agent. we only need document if deployer want guest os online cpu automatically, they can config guest os with udev script or guest agent. Does make sense? Thanks Alex","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"3c937db471c502090b171d1a166bbed8014d2575","unresolved":false,"context_lines":[{"line_number":39,"context_line":"   to indicate(Implemented in Havana [1])."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"   Image without qga in libvirt will be raised \u0027NotSupportedException\u0027"},{"line_number":42,"context_line":"   for \"live-resize\"."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"1. Add a new key-value pair in image\u0027s metadata like {\u0027max_vcpus_limit\u0027:\u003cint\u003e}."},{"line_number":45,"context_line":"   This value will be effective in spawn/rebuild/rescue/resize/live-resize."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ae8d1ca_51bb1ec4","line":42,"in_reply_to":"3ae8d1ca_50879c61","updated":"2014-05-27 07:04:33.000000000","message":"Yes, gqa should be running for this feature.\n\nBut unfortunately, we can\u0027t judge the status of qga outside the guest now. So, if user disable the agent inside the guest, they have to activate the new plugged vcpus manually like alternative #1. That\u0027s not the condition we want to have. Maybe we also need to add this situation into alternative #1.","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":9060,"name":"Mike Dorman","email":"dorm@dorm.org","username":"gd-mdorman"},"change_message_id":"be37dde7138a6cc31b86ccf0be383bf184720381","unresolved":false,"context_lines":[{"line_number":39,"context_line":"   to indicate(Implemented in Havana [1])."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"   Image without qga in libvirt will be raised \u0027NotSupportedException\u0027"},{"line_number":42,"context_line":"   for \"live-resize\"."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"1. Add a new key-value pair in image\u0027s metadata like {\u0027max_vcpus_limit\u0027:\u003cint\u003e}."},{"line_number":45,"context_line":"   This value will be effective in spawn/rebuild/rescue/resize/live-resize."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ae8d1ca_223478dd","line":42,"in_reply_to":"3ae8d1ca_51bb1ec4","updated":"2014-05-27 13:53:02.000000000","message":"I think this behavior is OK, as long as it\u0027s called out in documentation (and the commands to run to hotplug CPUs manually.)  Operators can never fully control what users do inside guests, anyway, so IMO there is no avoiding this.","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"017a0ec7f038eee2cce96798ebb4f59bf12e75b5","unresolved":false,"context_lines":[{"line_number":39,"context_line":"   to indicate(Implemented in Havana [1])."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"   Image without qga in libvirt will be raised \u0027NotSupportedException\u0027"},{"line_number":42,"context_line":"   for \"live-resize\"."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"1. Add a new key-value pair in image\u0027s metadata like {\u0027max_vcpus_limit\u0027:\u003cint\u003e}."},{"line_number":45,"context_line":"   This value will be effective in spawn/rebuild/rescue/resize/live-resize."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_2e49b38b","line":42,"in_reply_to":"3ae8d1ca_814c1c44","updated":"2014-06-09 07:13:13.000000000","message":"Hi Alex, thanks for your information here.\n\nI read the link\u0027s contents before, after testing in local environments, I think udev is more complicated than the qga. And moreover, qga has been involved in some features of Nova, so I choose it to implement/simplify this idea, no need to achieve/acquire more requirements.\n\nThis is my consideration. :)","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e1f8a4efbb938882632a9774173dda94beab4145","unresolved":false,"context_lines":[{"line_number":42,"context_line":"   for \"live-resize\"."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"1. Add a new key-value pair in image\u0027s metadata like {\u0027max_vcpus_limit\u0027:\u003cint\u003e}."},{"line_number":45,"context_line":"   This value will be effective in spawn/rebuild/rescue/resize/live-resize."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"2. Add a new extension API \"live-resize\" which the owner and admin can use it."},{"line_number":48,"context_line":"   The API can specify whether execute \"live_migration\""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_67ee628d","line":45,"updated":"2014-06-09 21:29:16.000000000","message":"Why would this be in the image\u0027s metadata? The same image may be launched with multiple flavors, and multiple vCPU units. Why would instance-specific information like this be tagged to the image itself?","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"53a26244169fa2fb4fa477325c851c763ad2f569","unresolved":false,"context_lines":[{"line_number":42,"context_line":"   for \"live-resize\"."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"1. Add a new key-value pair in image\u0027s metadata like {\u0027max_vcpus_limit\u0027:\u003cint\u003e}."},{"line_number":45,"context_line":"   This value will be effective in spawn/rebuild/rescue/resize/live-resize."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"2. Add a new extension API \"live-resize\" which the owner and admin can use it."},{"line_number":48,"context_line":"   The API can specify whether execute \"live_migration\""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_8b37f0af","line":45,"in_reply_to":"1ae5cdf2_67ee628d","updated":"2014-06-10 03:13:00.000000000","message":"Do you mean it\u0027s better to store this tag into instance\u0027s metadata(or the tagging thing you\u0027re submitting on I5f299d691a0d2669179d9554e7ebb14cfe7a1dd8)? Maybe this\u0027s a good idea, I\u0027ll consider it carefully.\n\nThanks, Jay. :)","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"2503dc9050275dea869663ef7b16c4cb76abcdd1","unresolved":false,"context_lines":[{"line_number":47,"context_line":"2. Add a new extension API \"live-resize\" which the owner and admin can use it."},{"line_number":48,"context_line":"   The API can specify whether execute \"live_migration\""},{"line_number":49,"context_line":"   when original host doesn\u0027t have enough resources to hotplug or not."},{"line_number":50,"context_line":"   See details in the API part."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"3. Add a new \u0027LIVE_RESIZING\u0027 to task states."},{"line_number":53,"context_line":"   It means the request is sent to compute node to execute."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_969e70b7","line":50,"updated":"2014-06-16 11:15:10.000000000","message":"I wouldn\u0027t try to overload migration with resize. IMHO if the current host doesn\u0027t have sufficient resources just fail. They can explicitly call the existing migration API if they wish to move to a different host, prior to calling resize.","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e1f8a4efbb938882632a9774173dda94beab4145","unresolved":false,"context_lines":[{"line_number":62,"context_line":"   for live-resizing by comparing the requested flavor with the old one."},{"line_number":63,"context_line":"   And the latter one will implement specific execution for live-resizing."},{"line_number":64,"context_line":"   The default of the two APIs is to raise \u0027NotImplementedError\u0027"},{"line_number":65,"context_line":"   in base virt driver."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"6. Add a new field called \u0027max_vcpus_limit\u0027 in \u0027Instance.system_metadata\u0027"},{"line_number":68,"context_line":"   (or Instance?) table in DB to record max vCPUs of instances."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_e776f2d7","line":65,"updated":"2014-06-09 21:29:16.000000000","message":"The resize and migrate APIs (public as well as internal) in Nova right now are a complete and utter mess, with implementation details leaking out all over the place. It\u0027s one of the biggest sources of confusion for both developers and end-users alike.\n\nI really don\u0027t like the idea of making the resize and migration APIs yet more confusing with an additional API extension. I would vastly prefer to instead work on cleaning up the resize and migrate APIs (public and internal) than add yet more features to it.","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"53a26244169fa2fb4fa477325c851c763ad2f569","unresolved":false,"context_lines":[{"line_number":62,"context_line":"   for live-resizing by comparing the requested flavor with the old one."},{"line_number":63,"context_line":"   And the latter one will implement specific execution for live-resizing."},{"line_number":64,"context_line":"   The default of the two APIs is to raise \u0027NotImplementedError\u0027"},{"line_number":65,"context_line":"   in base virt driver."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"6. Add a new field called \u0027max_vcpus_limit\u0027 in \u0027Instance.system_metadata\u0027"},{"line_number":68,"context_line":"   (or Instance?) table in DB to record max vCPUs of instances."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_8688c723","line":65,"in_reply_to":"1ae5cdf2_e776f2d7","updated":"2014-06-10 03:13:00.000000000","message":"So you mean we need to refactor the original designs between \u0027resize\u0027 \u0026 \u0027migrate\u0027? Could you please give more tips here? :)","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e1f8a4efbb938882632a9774173dda94beab4145","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"   If image does not have the \u0027max_vcpus_limit\u0027 tag in its metadata,"},{"line_number":73,"context_line":"   the value of \u0027max_vcpus_limit\u0027 will be 0(\u0027NO LIMIT\u0027). Besides, all instances"},{"line_number":74,"context_line":"   upgraded from lower version, this value will also be equals to 0."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"7. Change one element in the config-xml of instance in libvirt driver"},{"line_number":77,"context_line":"   from \"\u003cvcpu\u003eX\u003c/vcpu\u003e\" style to \"\u003cvcpu current\u003d\u0027X\u0027\u003e\u0027Y\u0027\u003c/vcpu\u003e\""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_c715764a","line":74,"updated":"2014-06-09 21:29:16.000000000","message":"I don\u0027t really see the point of having a max_vcpus_limit in the instance server_metadata. Why limit the vCPUs that an instance can consume? If the number of vCPUs that the user wants to resize to exceeds the number of vCPUs available on the compute node the instance is on, then the \"live-resize\" operation should just become either a \"live-migrate\" operation to a compute node that has the available resources or, if no such node is available, return an exception and keep the instance on the current node.","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"53a26244169fa2fb4fa477325c851c763ad2f569","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"   If image does not have the \u0027max_vcpus_limit\u0027 tag in its metadata,"},{"line_number":73,"context_line":"   the value of \u0027max_vcpus_limit\u0027 will be 0(\u0027NO LIMIT\u0027). Besides, all instances"},{"line_number":74,"context_line":"   upgraded from lower version, this value will also be equals to 0."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"7. Change one element in the config-xml of instance in libvirt driver"},{"line_number":77,"context_line":"   from \"\u003cvcpu\u003eX\u003c/vcpu\u003e\" style to \"\u003cvcpu current\u003d\u0027X\u0027\u003e\u0027Y\u0027\u003c/vcpu\u003e\""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_0bb0408a","line":74,"in_reply_to":"1ae5cdf2_c715764a","updated":"2014-06-10 03:13:00.000000000","message":"This item aims to store the original vcpus\u0027 limitation.\nBecause either image\u0027metadata or instance\u0027s metadata can be changed after instance creation.\n\nIf not recorded, after modified original tag then start/rebuild/.. instance, which value I need to write in libvirt template? In that case, some actions can\u0027t be predictable.\n\nFor example, if one vcpus\u0027 scope is [1,3], and the VM has been \u0027live-resize\u0027ed to 2 vcpus. Now I changed the original tag to {\u0027max_vcpus_limit\u0027: 1}. So which action needs to be executed? Downgrade the VM to 1 vcpus? Raise an error? Ignore the new tag modification \u0026 startVM successful? No one is reasonable.\n\nBy the way, if this image used to create multiple instances and its metadata changed several times during creation, those instances\u0027 ability of \u0027live-resize\u0027 still can\u0027t be predicable..  \n(Tag stored in instance\u0027s metadata won\u0027t be affected in this situation)\n\nThat\u0027s why I need to record it in db.","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e1f8a4efbb938882632a9774173dda94beab4145","unresolved":false,"context_lines":[{"line_number":78,"context_line":"   if \u0027max_vcpus_limit\u0027 is specified in image\u0027s metadata."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"   Here, the \u0027X\u0027 will be the value of flavor\u0027s \u0027vcpus\u0027,"},{"line_number":81,"context_line":"   and the \u0027Y\u0027 will be equal to \u0027max_vcpus_limit\u0027 we added in the step1."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"8. The API \u0027DescribeInstance\u0027 needs to add one key-pair property"},{"line_number":84,"context_line":"   into the response body like \u003c\u0027max_vcpus_limit\u0027:4\u003e to show the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_a209382e","line":81,"updated":"2014-06-09 21:29:16.000000000","message":"If this is the only way that the libvirt XML template can be configured in order to allow the guest to be resized by the qga, then this, IMO, is a flawed interface in libvirt. Why can\u0027t the value of \u003cvcpu\u003eX\u003c/vcpu\u003e simply be changed to the requested new size?","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"2503dc9050275dea869663ef7b16c4cb76abcdd1","unresolved":false,"context_lines":[{"line_number":78,"context_line":"   if \u0027max_vcpus_limit\u0027 is specified in image\u0027s metadata."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"   Here, the \u0027X\u0027 will be the value of flavor\u0027s \u0027vcpus\u0027,"},{"line_number":81,"context_line":"   and the \u0027Y\u0027 will be equal to \u0027max_vcpus_limit\u0027 we added in the step1."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"8. The API \u0027DescribeInstance\u0027 needs to add one key-pair property"},{"line_number":84,"context_line":"   into the response body like \u003c\u0027max_vcpus_limit\u0027:4\u003e to show the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_d65b98f4","line":81,"in_reply_to":"1ae5cdf2_a209382e","updated":"2014-06-16 11:15:10.000000000","message":"This is because CPU hotplug isn\u0027t really hotplugging. You have to tell the guest operating system how many possible CPU sockets it will have upfront and it is then really just dynamically onlining these pre-created sockets.","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"53a26244169fa2fb4fa477325c851c763ad2f569","unresolved":false,"context_lines":[{"line_number":78,"context_line":"   if \u0027max_vcpus_limit\u0027 is specified in image\u0027s metadata."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"   Here, the \u0027X\u0027 will be the value of flavor\u0027s \u0027vcpus\u0027,"},{"line_number":81,"context_line":"   and the \u0027Y\u0027 will be equal to \u0027max_vcpus_limit\u0027 we added in the step1."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"8. The API \u0027DescribeInstance\u0027 needs to add one key-pair property"},{"line_number":84,"context_line":"   into the response body like \u003c\u0027max_vcpus_limit\u0027:4\u003e to show the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_eb295438","line":81,"in_reply_to":"1ae5cdf2_a209382e","updated":"2014-06-10 03:13:00.000000000","message":"Yes, you\u0027re right, that\u0027s a restriction of libvirt..\n\nIf you want to change it via \u0027setvcpus --live\u0027, you\u0027ll get an error like \"requested vcpus is greater than max allowable vcpus for the domain\".","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e1f8a4efbb938882632a9774173dda94beab4145","unresolved":false,"context_lines":[{"line_number":80,"context_line":"   Here, the \u0027X\u0027 will be the value of flavor\u0027s \u0027vcpus\u0027,"},{"line_number":81,"context_line":"   and the \u0027Y\u0027 will be equal to \u0027max_vcpus_limit\u0027 we added in the step1."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"8. The API \u0027DescribeInstance\u0027 needs to add one key-pair property"},{"line_number":84,"context_line":"   into the response body like \u003c\u0027max_vcpus_limit\u0027:4\u003e to show the"},{"line_number":85,"context_line":"   max vcpus limit of this instance which can be obtained from DB table."},{"line_number":86,"context_line":"   (Now only vcpus live-resize will be implemented in libvirt driver)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_471b26ca","line":83,"updated":"2014-06-09 21:29:16.000000000","message":"DescribeInstance is an EC2 API call, not an OpenStack API call... same with CreateInstances below.\n\nSince we don\u0027t control the EC2 API (Amazon does...), we cannot make any changes to it. We can only follow it as it exists.","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"53a26244169fa2fb4fa477325c851c763ad2f569","unresolved":false,"context_lines":[{"line_number":80,"context_line":"   Here, the \u0027X\u0027 will be the value of flavor\u0027s \u0027vcpus\u0027,"},{"line_number":81,"context_line":"   and the \u0027Y\u0027 will be equal to \u0027max_vcpus_limit\u0027 we added in the step1."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"8. The API \u0027DescribeInstance\u0027 needs to add one key-pair property"},{"line_number":84,"context_line":"   into the response body like \u003c\u0027max_vcpus_limit\u0027:4\u003e to show the"},{"line_number":85,"context_line":"   max vcpus limit of this instance which can be obtained from DB table."},{"line_number":86,"context_line":"   (Now only vcpus live-resize will be implemented in libvirt driver)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_35aabb19","line":83,"in_reply_to":"1ae5cdf2_471b26ca","updated":"2014-06-10 03:13:00.000000000","message":"Sorry, I mean the same function in OpenStack API, I\u0027ll clarify in the later patches.","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"2503dc9050275dea869663ef7b16c4cb76abcdd1","unresolved":false,"context_lines":[{"line_number":85,"context_line":"   max vcpus limit of this instance which can be obtained from DB table."},{"line_number":86,"context_line":"   (Now only vcpus live-resize will be implemented in libvirt driver)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Alternatives"},{"line_number":90,"context_line":"------------"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_76ec8493","line":88,"updated":"2014-06-16 11:15:10.000000000","message":"There are a bunch of problems that are going to arise in Juno when we consider other features being implemented\n\n- vCPU topology. If we adding CPUs what does this mean for the sockets/cores/threads topology. Logically it might seems we can only add sockets if we\u0027re truly hotplugging. If we\u0027re just onlining pre-existing but disabled CPUs though, we can theoretically add any of sockets/cores/threads.  Does this mean that topology used for a guest corresponds to the max_vcpus value or to the initial boot value. This is all quite problematic to think about\n\n- NUMA placement. If we have a guest that has vCPU affinity to specific NUMA nodes, we will need to consider how to update that affinity at runtime, and what this means wrt to the configuration defined in the flavor for NUMA placement. eg which NUMA node do we place the new vCPU on ? what if the existing host NUMA node is full already and we can\u0027t place the vCPU there.\n\n- Strict vCPU pinning. If we have a guest with strict host\u003c-\u003eguest pCPU\u003c-\u003evCPU pinning we again have to consider how to place the new vCPUs on the host.\n\n\nWhat gets really difficult is when you consider that the new flavor being resized to could have completely different policies for vCPU toplogy/NUMA placement/CPU pinning that the original flavour.  Updating the VM to comply with the policies of the new flavor is going to be a serious amount of work, and may not even be possible.\n\nI can understand the desire to add \"live resize\", but I can\u0027t help thinking that trying to support this concept is going to open a huge can of worms, unleashing a torrent of bugs we can never hope to fix. I\u0027m really not sure we want to go down this path at all, when cold resize avoids all these problems and work.","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"84e28d560a7084d12c8b3ce4a3680f9144474b16","unresolved":false,"context_lines":[{"line_number":172,"context_line":"   * The disadvantage is it\u0027ll brings difference between \"resize\" \u0026"},{"line_number":173,"context_line":"     \"live-resize\". Because \"live_resize\" needs to follow the restriction."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"   Therefore, I\u0027m still preferred to the original design."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"5. \u0027max_vcpus_limit\u0027 stored in flavor\u0027s extra_specc, not in image\u0027s metadata"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ae8d1ca_61039073","line":175,"updated":"2014-05-29 11:38:53.000000000","message":"+1","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"84e28d560a7084d12c8b3ce4a3680f9144474b16","unresolved":false,"context_lines":[{"line_number":197,"context_line":"     different versions the rather that we need to support the feature"},{"line_number":198,"context_line":"     under different OSs."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"   Therefore, I choose to store the \u0027max_vcpus_limit\u0027 in each image\u0027s metadata."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ae8d1ca_2117c8a4","line":200,"updated":"2014-05-29 11:38:53.000000000","message":"+1","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"84e28d560a7084d12c8b3ce4a3680f9144474b16","unresolved":false,"context_lines":[{"line_number":208,"context_line":"| Field           | Type         | Null | Key | Default | Extra          |"},{"line_number":209,"context_line":"+-----------------+--------------+------+-----+---------+----------------+"},{"line_number":210,"context_line":"| max_vcpus_limit | int(11)      | YES  |     | NULL    |                |"},{"line_number":211,"context_line":"+-----------------+--------------+------+-----+---------+----------------+"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"* This value is initialled in the procession of instance creation,"},{"line_number":214,"context_line":"  and can\u0027t be modified afterwards."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ae8d1ca_0162cc3d","line":211,"updated":"2014-05-29 11:38:53.000000000","message":"instance_system_metadata can store key/value. So we needn\u0027t add new field to this table?","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"017a0ec7f038eee2cce96798ebb4f59bf12e75b5","unresolved":false,"context_lines":[{"line_number":208,"context_line":"| Field           | Type         | Null | Key | Default | Extra          |"},{"line_number":209,"context_line":"+-----------------+--------------+------+-----+---------+----------------+"},{"line_number":210,"context_line":"| max_vcpus_limit | int(11)      | YES  |     | NULL    |                |"},{"line_number":211,"context_line":"+-----------------+--------------+------+-----+---------+----------------+"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"* This value is initialled in the procession of instance creation,"},{"line_number":214,"context_line":"  and can\u0027t be modified afterwards."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_c55f5274","line":211,"in_reply_to":"3ae8d1ca_0162cc3d","updated":"2014-06-09 07:13:13.000000000","message":"Yes, Alex, you\u0027re right. I\u0027ll modify it.","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"84e28d560a7084d12c8b3ce4a3680f9144474b16","unresolved":false,"context_lines":[{"line_number":250,"context_line":"    No default value."},{"line_number":251,"context_line":"  * The \u003cboolean\u003e \u0027allow_live_migration\u0027 means whether execute \"live_migration\""},{"line_number":252,"context_line":"    if instance\u0027s original host doesn\u0027t have enough resources."},{"line_number":253,"context_line":"    The default value should be \u0027False\u0027."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"The response body of it is like::"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3ae8d1ca_e1f8804b","line":253,"updated":"2014-05-29 11:38:53.000000000","message":"resize always scheduler the instance. why not same with resize action?","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"017a0ec7f038eee2cce96798ebb4f59bf12e75b5","unresolved":false,"context_lines":[{"line_number":250,"context_line":"    No default value."},{"line_number":251,"context_line":"  * The \u003cboolean\u003e \u0027allow_live_migration\u0027 means whether execute \"live_migration\""},{"line_number":252,"context_line":"    if instance\u0027s original host doesn\u0027t have enough resources."},{"line_number":253,"context_line":"    The default value should be \u0027False\u0027."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"The response body of it is like::"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1ae5cdf2_85e46aad","line":253,"in_reply_to":"3ae8d1ca_e1f8804b","updated":"2014-06-09 07:13:13.000000000","message":"Because I want to give this choice to users. IMO \u0027live_resize\u0027 has more failure risks than \u0027resize\u0027, \u0027live_migration\u0027 depends on more factors than stop+start a vm. So maybe users don\u0027t want to take it. Therefore, I add this param here.","commit_id":"124a5b652590707a09a496b2aa19a2863f96bf4c"}]}
