[Kimchi-devel] [PATCH][Kimchi 1/5] Create method to change bootorder of a guest

Aline Manera alinefm at linux.vnet.ibm.com
Wed Jun 8 20:40:23 UTC 2016



On 06/08/2016 05:34 PM, Aline Manera wrote:
>
>
> On 06/08/2016 05:32 PM, Rodrigo Trujillo wrote:
>>
>>
>> On 06/08/2016 05:12 PM, Aline Manera wrote:
>>>
>>>
>>> On 06/07/2016 09:52 AM, Rodrigo Trujillo wrote:
>>>>
>>>>
>>>> On 06/06/2016 06:13 PM, Ramon Medeiros wrote:
>>>>> Signed-off-by: Ramon Medeiros <ramonn at linux.vnet.ibm.com>
>>>>> ---
>>>>>   model/vms.py | 34 +++++++++++++++++++++++++++++++++-
>>>>>   1 file changed, 33 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/model/vms.py b/model/vms.py
>>>>> index b0b4eb2..854cd04 100644
>>>>> --- a/model/vms.py
>>>>> +++ b/model/vms.py
>>>>> @@ -81,7 +81,7 @@ VM_ONLINE_UPDATE_PARAMS = ['graphics', 'groups', 
>>>>> 'memory', 'users']
>>>>>
>>>>>   # update parameters which are updatable when the VM is offline
>>>>>   VM_OFFLINE_UPDATE_PARAMS = ['cpu_info', 'graphics', 'groups', 
>>>>> 'memory',
>>>>> -                            'name', 'users']
>>>>> +                            'name', 'users', 'boot']
>>>>>
>>>>>   XPATH_DOMAIN_DISK = 
>>>>> "/domain/devices/disk[@device='disk']/source/@file"
>>>>>   XPATH_DOMAIN_DISK_BY_FILE = 
>>>>> "./devices/disk[@device='disk']/source[@file='%s']"
>>>>> @@ -736,6 +736,34 @@ class VMModel(object):
>>>>>           else:
>>>>>               remove_metadata_node(dom, 'name')
>>>>>
>>>>> +    def _update_bootorder(self, xml, params):
>>>>> +        # get element tree from xml
>>>>> +        et = ET.fromstring(xml)
>>>>> +
>>>>> +        # get machine type
>>>>> +        os = et.find("os")
>>>>> +        mtype = os.find("type")
>>>>> +
>>>>> +        # create new element tree with new bootorder
>>>>> +        new_os = E.os()
>>>>> +        new_os.append(mtype)
>>>>> +
>>>>> +        # iterate over new bootorder and build tag
>>>>> +        for device in params["order"]:
>>>>> +
>>>>> +            # skip devices not in list
>>>>> +            if device not in ["hd", "cdrom", "network", "fd"]:
>>>> I would move this checking to the JSON schema, you can use ENUM for 
>>>> this.
>>>> Also add the names to the messages, so user can know what to change.
>>>
>>> +1
>>>
>>> Also move all the XML building to /xmlutils. Create a new file there 
>>> to work with <boot> tag.
>> I don't agree with this ... the xml manipulation is so simple and not 
>> reusable to demand a new file.
>>
>
> In future, we can evaluate if it is necessary on template level as well.
> I really don't like to have XML building spread among the code as we 
> already have a module for that.
>

In fact, we already have boot order on Templates and 
xmlutils/bootorder.py to build the <boot> =)

Ramon, please use this module instead of building the XML manually.

>>>
>>>>> +                continue
>>>>> +
>>>>> +            # add bootdevice
>>>>> +            new_os.append(E.boot(dev=device))
>>>>> +
>>>>> +        # update <os>
>>>>> +        et.remove(os)
>>>>> +        et.append(new_os)
>>>>> +
>>>>> +        return ET.tostring(et)
>>>>> +
>>>>>       def _static_vm_update(self, vm_name, dom, params):
>>>>>           old_xml = new_xml = 
>>>>> dom.XMLDesc(libvirt.VIR_DOMAIN_XML_SECURE)
>>>>>           params = copy.deepcopy(params)
>>>>> @@ -782,6 +810,10 @@ class VMModel(object):
>>>>>           if ('memory' in params and params['memory'] != {}):
>>>>>               new_xml = self._update_memory_config(new_xml, 
>>>>> params, dom)
>>>>>
>>>>> +        # update bootorder
>>>>> +        if "boot" in params:
>>>>> +            new_xml = self._update_bootorder(new_xml, 
>>>>> params["boot"])
>>>>> +
>>>>>           snapshots_info = []
>>>>>           conn = self.conn.get()
>>>>>           try:
>>>>
>>>> _______________________________________________
>>>> 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
>>>
>>
>> _______________________________________________
>> 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