[Kimchi-devel] [PATCH] [Kimchi 1/4] Add support to create netboot templates.

Aline Manera alinefm at linux.vnet.ibm.com
Wed Apr 27 01:33:22 UTC 2016



On 04/26/2016 05:48 PM, Ramon Medeiros wrote:
>
>
> On 04/26/2016 04:47 PM, Paulo Ricardo Paz Vital wrote:
>> On Apr 26 04:32PM, Ramon Medeiros wrote:
>>>
>>> On 04/26/2016 03:30 PM, pvital at linux.vnet.ibm.com wrote:
>>>> From: Paulo Vital <pvital at linux.vnet.ibm.com>
>>>>
>>>> Changed API.json and model to accept 'netboot' as source media 
>>>> parameter while
>>>> creating a new template.
>>>>
>>>> Now, when creating a new template and specifying 'netboot' as 
>>>> source media
>>>> parameter, it is assumed the template will use netboot process - 
>>>> PXE/DHCP/
>>>> TFTP/(NFS/HTTP/FTP).
>>>>
>>>> This is part of solution to Issue #372.
>>>>
>>>> Signed-off-by: Paulo Vital <pvital at linux.vnet.ibm.com>
>>>> ---
>>>>   API.json           | 18 +++++++++++++++---
>>>>   model/templates.py | 14 +++++++++++++-
>>>>   vmtemplate.py      |  4 ++++
>>>>   3 files changed, 32 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/API.json b/API.json
>>>> index 380ed19..d452270 100644
>>>> --- a/API.json
>>>> +++ b/API.json
>>>> @@ -505,9 +505,21 @@
>>>>                   },
>>>>                   "memory": { "$ref": "#/kimchitype/memory" },
>>>>                   "source_media": {
>>>> -                    "description": "Path for installation media 
>>>> (ISO, disk, remote ISO)",
>>>> -                    "type" : "string",
>>>> -                    "pattern" : 
>>>> "^((/)|(http)[s]?:|[t]?(ftp)[s]?:)+.*$",
>>>> +                    "type" : "object",
>>>> +                    "properties" : {
>>>> +                        "type": {
>>>> +                            "description": "Type of source media: 
>>>> disk or netboot",
>>>> +                            "type": "string",
>>>> +                            "pattern": "^disk|netboot$",
>>>> +                            "required": true
>>>> +                        },
>>>> +                        "path": {
>>>> +                            "description": "Path for installation 
>>>> media (ISO, disk, remote ISO)",
>>>> +                            "type": "string",
>>>> +                            "pattern" : 
>>>> "^((/)|(http)[s]?:|[t]?(ftp)[s]?:)+.*$"
>>>> +                        }
>>>> +                    },
>>>> +                    "additionalProperties": false,
>>>>                       "required": true
>>>>                   },
>>>>                   "disks": {
>>>> diff --git a/model/templates.py b/model/templates.py
>>>> index 431cae0..90b6603 100644
>>>> --- a/model/templates.py
>>>> +++ b/model/templates.py
>>>> @@ -63,9 +63,21 @@ class TemplatesModel(object):
>>>> 'template': name})
>>>>
>>>>           # get source_media
>>>> -        path = params.pop("source_media")
>>>> +        source_media = params.get("source_media", None)
>>>> +
>>>> +        if source_media['type'] == 'netboot':
>>>> +            params['os_distro'] = 'unknown'
>>>> +            params['os_version'] = 'unknown'
>>>> +            return self.save_template(params)
>>>> +        else:
>>>> +            # Get path of source media if it's based on disk type.
>>>> +            path = source_media.get('path', None)
>>>> +
>>>> +        if path is None:
>>>> +            raise InvalidParameter("KCHTMPL0016E")
>>>>
>>>>           # not local image: set as remote ISO
>>>> +        path = path.encode('utf-8')
>>>>           if urlparse.urlparse(path).scheme in ["http", "https", 
>>>> "tftp", "ftp",
>>>>                                                 "ftps"]:
>>>>               params["cdrom"] = path
>>>> diff --git a/vmtemplate.py b/vmtemplate.py
>>>> index a223beb..3e4418f 100644
>>>> --- a/vmtemplate.py
>>>> +++ b/vmtemplate.py
>>>> @@ -123,6 +123,10 @@ class VMTemplate(object):
>>>>       def _get_os_info(self, args, scan):
>>>>           distro = version = 'unknown'
>>>>
>>>> +        if 'source_media' in args.keys():
>>> how can source_media be present here? We used .pop on model/templates
>> I changed to .get to keep the parameters persistent through the code 
>> flow.

> ok. Don't forget to remove the source_media before storing the 
> template to objectstore. We don't want to save this info at template

Good point! Thinking about that, it would be better to have the netboot 
information as a parameter instead of part of params object.

VMTemplate(..., netboot=True)

>>
>>>> +            if args['source_media']['type'] == 'netboot':
>>>> +                return distro, version
>>>> +
>>>>           # Identify the cdrom if present
>>>>           iso = args.get('cdrom', '')
>>>>           if len(iso) > 0:
>>> -- 
>>>
>>> Ramon Nunes Medeiros
>>> Kimchi Developer
>>> Linux Technology Center Brazil
>>> IBM Systems & Technology Group
>>> Phone : +55 19 2132 7878
>>> ramonn at br.ibm.com
>>>
>> -- 
>> Paulo Ricardo Paz Vital
>> Linux Technology Center, IBM Systems
>> http://www.ibm.com/linux/ltc/
>>
>> _______________________________________________
>> 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