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