Hi Ramon,
I just want to send you some tips on how to do that feature.
1. You are changing the way the template is created. Now source_media is
a required parameter and need to be properly added on API.json
2. source_media will replace cdrom and disk[base], so, please update
API.json to reflect it.
3. Following the Template creation flow, the request will first touch on
model/templates.py in create() function.
The code below needs to be moved around as at this point you will not
know if source_media is an ISO or an Image file.
...
iso = params.get('cdrom')
# check search permission
if iso and iso.startswith('/') and os.path.exists(iso):
st_mode = os.stat(iso).st_mode
if stat.S_ISREG(st_mode) or stat.S_ISBLK(st_mode):
user = UserTests().probe_user()
run_setfacl_set_attr(iso, user=user)
ret, excp = probe_file_permission_as_user(iso, user)
if ret is False:
raise InvalidParameter('KCHISO0008E',
{'filename': iso, 'user':
user,
'err': excp})
4. The second step is vmtemplate.py.
As you can see you will need to change the function _get_os_info()
to something like:
*
** source_media = args.get('source_media)**
** if source_media is not None:**
** if source_media.startswith('http|https|ftp|...') or <use
python magic to identify it is an ISO> :**
** args[cdrom] = source_media**
** else:**
** # assume it is an image**
** args[disks] = {base: source_media}*
# the code below keeps the same
Does all that make sense for you?
Regards,
Aline Manera
On 03/31/2016 10:47 AM, Ramon Medeiros wrote:
Instead of specify if the media is cdrom or disk, use source_media to
create a template
Changes:
v2:
Remove libvirt connection from VMtemplate
Fix incorrect changes on tests
Fix return status when source_media not passed
v3:
Fix pep8 issues
Remove/add some constants
Rewrite API message
Ramon Medeiros (4):
Create a single field to pass the installation media
Fix checking duplicate template before creating it
Identify installation media while creating template
Update tests
API.json | 5 ++
i18n.py | 2 +-
model/templates.py | 15 ++++--
tests/test_authorization.py | 4 +-
tests/test_livemigration.py | 7 +--
tests/test_mockmodel.py | 13 +++---
tests/test_model.py | 94 ++++++++++++++++++++-----------------
tests/test_rest.py | 36 +++++++--------
tests/test_template.py | 47 +++++++++----------
tests/test_vmtemplate.py | 40 ++++++++--------
vmtemplate.py | 110 +++++++++++++++++++++++++++++++++++++-------
11 files changed, 235 insertions(+), 138 deletions(-)