[Kimchi-devel] [PATCH 0/6 - V2][Memory HotPlug] Implements backend of memory device hotplug
Aline Manera
alinefm at linux.vnet.ibm.com
Mon Jun 1 19:55:23 UTC 2015
On 01/06/2015 16:24, Rodrigo Trujillo wrote:
> Hi Aline, thank you for the review.
>
> See my answers in below and in next emails.
>
> Rodrigo
>
> On 06/01/2015 09:18 AM, Aline Manera wrote:
>>
>>
>> On 28/05/2015 10:59, Rodrigo Trujillo wrote:
>>> V2
>>> - Fix erros in tests and add a test to slots number
>>> - Fix other minor issues with Libvirt < 1.2.14
>>>
>>> V1
>>> This patchset implements the backend part of memory hotplug
>>> functionality,
>>> including:
>>> - new feature test to check if libvirt supports memory devices
>>> - changes the way that memory is assigned or updated in the guest xml:
>>> * memory is now set in a basic NUMA node
>>> - includes maxMemory element in the XML:
>>> * which is equal the total memory of the host
>>> * sets memory device slots. The total number of slots are equal the
>>> maxMemory minus the memory assigned (1 slot == 1 GB )
>>> - creates a new VM device, the memory device:
>>> * by default, a memory device will have 1GB
>>> * user can add the memory device with machine running or offline
>>> - memory devices are selected according to its position in the xml
>>> (the slot)
>>> 0, 1, 2, etc
>>
>>> URL:
>>> - http://localhost:8010/vms/<VM>/memdevices
>>> - http://localhost:8010/vms/<VM>/memdevices/<MEM-DEV>
>>
>> I understand why you created the API like above, but from a user
>> perspective I just want to increase the guest memory and it should be
>> transparent to user.
>>
>> I'd expect the API to use the PUT /vms/<name> {memory: 2048}
>
> I developed this feature thinking in 2 environments: VM running and VM
> stopped.
> If the VM is stopped then user or UI would have to use "PUT
> /vms/<name> {memory: 2048}"
> If the VM is running then user or UI would have to use "POST
> /vms/<name>/memdevides {amount: 2}
> From the UI side, there would not need calculation, just check if the
> VM is running, use different elements and do a different call, notice
> that if the VM is running it will only accept integer amounts of GiB.
>
> There is no problem on use "PUT /vms/<name> {memory: 2048}" to
> simplify users life, just need to think a little bit more in the
> "intelligence" to handle the memory number passed.
> The 'vm update' function can check if the vm is running or not and
> make use of the memdevice API.
Yeap. I have thought on that way.
But instead of keeping the memdevice API, it will turn on multiple
methods inside VMModel()
So let's say my guest is running and I send the request:
PUT /vms/<name> {memory: 2048}
You will need to get the current memory (let's say 1024) and get the
difference to 2048 and add as many 1GB memory device as needed.
> In order to this work correctly, I believe I would have to code the
> "memdevice remove" function as well,
> or just allow to increase memory, when vm is running.
Only increasing the memory when the guest is running is enough by now
>
> What do you think ?
>
>>
>> And then backend would do the work otherwise we will insert some
>> backend logic to frontend, as user would set the memory to 2048 and
>> UI should calculate how many memory devices should be added. What
>> about one of those requests fails? UI would need to do a callback to
>> revert the successful requests.
> hum, actually what have thought is not allow user to set a number as
> memory, in the UI, if the guest is running. Instead, show the current
> memory in a disabled label, and add a second label with the number of
> Gb to add, like:
>
> --------- ----
> Memory | 2048 | Add (GB) | 0 | ( + ) ( - )
> --------- ----
>
>
> The UI would do only 1 more request for the memory.
> But that is what I have thought, we can keep the UI as is and add the
> handling in the update function.
About the UI, I thought very closed to you.
But the + icon would automatically increase the disabled label. So in
the beginning it is 1024, after selecting + it turns on 2048 and so on.
The same for the minus icon.
And on "Save" button, the request is sent to server.
>
>
>>>
>>> Rodrigo Trujillo (6):
>>> [Memory HotPlug] Feature test to check support to memory devices
>>> [Memory HotPlug] Add maxMemory and numa configuration to guest xml
>>> [Memory HotPlug] Memory device control and model classes
>>> [Memory HotPlug] Add parameters checking and documentation to
>>> memory
>>> device API
>>> [Memory HotPlug] Fix VM offline memory update and fix slots
>>> assignment
>>> [Memory HotPlug] Fix test and adds slot test
>>>
>>> docs/API.md | 16 +++++++
>>> src/kimchi/API.json | 14 +++++-
>>> src/kimchi/control/vm/memdevices.py | 47 +++++++++++++++++++
>>> src/kimchi/i18n.py | 5 ++
>>> src/kimchi/mockmodel.py | 7 +++
>>> src/kimchi/model/config.py | 3 ++
>>> src/kimchi/model/featuretests.py | 43 +++++++++++++++++
>>> src/kimchi/model/vmmemdevices.py | 94
>>> +++++++++++++++++++++++++++++++++++++
>>> src/kimchi/model/vms.py | 85
>>> ++++++++++++++++++++++++++++-----
>>> src/kimchi/vmtemplate.py | 40 ++++++++++++----
>>> tests/test_model.py | 2 +-
>>> tests/test_rest.py | 4 +-
>>> tests/test_vmtemplate.py | 5 +-
>>> 13 files changed, 338 insertions(+), 27 deletions(-)
>>> create mode 100644 src/kimchi/control/vm/memdevices.py
>>> create mode 100644 src/kimchi/model/vmmemdevices.py
>>>
>>
>> _______________________________________________
>> Kimchi-devel mailing list
>> Kimchi-devel at ovirt.org
>> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>>
>
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>
More information about the Kimchi-devel
mailing list