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(a)linux.vnet.ibm.com wrote:
>>> From: Paulo Vital <pvital(a)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(a)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(a)br.ibm.com
>>
> --
> Paulo Ricardo Paz Vital
> Linux Technology Center, IBM Systems
>
http://www.ibm.com/linux/ltc/
>
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel(a)ovirt.org
>
http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>