virtualization script should accept standard URLs OR filesystem paths

Bug #1621986 reported by Jeff Lane 
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Checkbox Provider - Base
Fix Released
Medium
Jeff Lane 

Bug Description

Currently, getting the cloud image is only possible one of two ways:

1: Specify a local file system path to a copy of the cloud image in the config file, or an env var:
KVM_IMAGE=/path/to/cloud.img

2: Specify NOTHING and the script downloads it directly from http://cloud-images.ubuntu.com

However, this could be greatly expanded to allow for custom URLs for local or remote locations, or local paths.

For example, perhaps I want to specify a special image hosted on a MAAS server:

KVM_IMAGE="http://maasserver.com/images/cloud.img"

Related branches

Revision history for this message
Jeff Lane  (bladernr) wrote :

Here's what happens when you specify nothing:
ubuntu@xwing:~$ ./virtualization kvm --debug
Executing KVM Test
WARNING:root:Config file /etc/xdg/virtualization.cfg was not found
WARNING:root:Now looking for ENV variables and command line arguments instead
DEBUG:root:Starting KVM Test
DEBUG:root:No image specified, downloading one now.
DEBUG:root:Downloading xenial-server-cloudimg-amd64-disk1.img, from http://cloud-images.ubuntu.com
(script modified to exit at this point)

Revision history for this message
Jeff Lane  (bladernr) wrote :

This is what happens now when you use a local file with a path specified in the config file, which is passed into the script via ENV VAR by checkbox-ng:

ubuntu@xwing:~$ KVM_IMAGE=/image/xenial-server-cloudimg-amd64-disk1.img ./virtualization kvm --debug
Executing KVM Test
WARNING:root:Config file /etc/xdg/virtualization.cfg was not found
WARNING:root:Now looking for ENV variables and command line arguments instead
DEBUG:root:Starting KVM Test
DEBUG:root:Cloud image location specified: /image/xenial-server-cloudimg-amd64-disk1.img.
DEBUG:root:Downloading image now
DEBUG:root:Cloud image exists locally at /image/xenial-server-cloudimg-amd64-disk1.img
(script modified to exit at this point)

Revision history for this message
Jeff Lane  (bladernr) wrote :

Now, lets pass the local file, using an actual URL:

ubuntu@xwing:~$ KVM_IMAGE=file:///image/xenial-server-cloudimg-amd64-disk1.img ./virtualization kvm --debug
Executing KVM Test
WARNING:root:Config file /etc/xdg/virtualization.cfg was not found
WARNING:root:Now looking for ENV variables and command line arguments instead
DEBUG:root:Starting KVM Test
DEBUG:root:Cloud image location specified: file:///image/xenial-server-cloudimg-amd64-disk1.img.
DEBUG:root:Downloading image now
DEBUG:root:Cloud image exists locally at /image/xenial-server-cloudimg-amd64-disk1.img
(script modified to exit at this point)

Revision history for this message
Jeff Lane  (bladernr) wrote :

OK... after tweaking... here is what you get when specifying a pure path, or a path URL with file://:

ubuntu@xwing:~$ KVM_IMAGE=file:///image/xenial-server-cloudimg-amd64-disk1.img ./virtualization kvm --debug
Executing KVM Test
WARNING:root:Config file /etc/xdg/virtualization.cfg was not found
WARNING:root:Now looking for ENV variables and command line arguments instead
DEBUG:root:Starting KVM Test
DEBUG:root:Cloud image location specified: file:///image/xenial-server-cloudimg-amd64-disk1.img.
DEBUG:root:Cloud image exists locally at /image/xenial-server-cloudimg-amd64-disk1.img
ubuntu@xwing:~$ KVM_IMAGE=/image/xenial-server-cloudimg-amd64-disk1.img ./virtualization kvm --debug
Executing KVM Test
WARNING:root:Config file /etc/xdg/virtualization.cfg was not found
WARNING:root:Now looking for ENV variables and command line arguments instead
DEBUG:root:Starting KVM Test
DEBUG:root:Cloud image location specified: /image/xenial-server-cloudimg-amd64-disk1.img.
DEBUG:root:Cloud image exists locally at /image/xenial-server-cloudimg-amd64-disk1.img

Revision history for this message
Jeff Lane  (bladernr) wrote :

This is with an absolute URL:
ubuntu@xwing:~$ KVM_IMAGE=http://10.0.0.1/images/xenial-server-cloudimg-amd64-disk1.img ./virtualization kvm --debug
Executing KVM Test
WARNING:root:Config file /etc/xdg/virtualization.cfg was not found
WARNING:root:Now looking for ENV variables and command line arguments instead
DEBUG:root:Starting KVM Test
DEBUG:root:Cloud image location specified: http://10.0.0.1/images/xenial-server-cloudimg-amd64-disk1.img.
DEBUG:root:Downloading xenial-server-cloudimg-amd64-disk1.img, from http://10.0.0.1

Revision history for this message
Jeff Lane  (bladernr) wrote :

This is with an incorrect relative URL:
ubuntu@xwing:~$ KVM_IMAGE=http://10.0.0.1/ ./virtualization kvm --debug
Executing KVM Test
WARNING:root:Config file /etc/xdg/virtualization.cfg was not found
WARNING:root:Now looking for ENV variables and command line arguments instead
DEBUG:root:Starting KVM Test
DEBUG:root:Cloud image location specified: http://10.0.0.1/.
DEBUG:root:Downloading xenial-server-cloudimg-amd64-disk1.img, from http://10.0.0.1/
ERROR:root:Failed download of image from http://10.0.0.1/: HTTP Error 404: Not Found

Revision history for this message
Jeff Lane  (bladernr) wrote :

With a correct relative URL:
ubuntu@xwing:~$ KVM_IMAGE=http://10.0.0.1/images/ ./virtualization kvm --debug
Executing KVM Test
WARNING:root:Config file /etc/xdg/virtualization.cfg was not found
WARNING:root:Now looking for ENV variables and command line arguments instead
DEBUG:root:Starting KVM Test
DEBUG:root:Cloud image location specified: http://10.0.0.1/images/.
DEBUG:root:Downloading xenial-server-cloudimg-amd64-disk1.img, from http://10.0.0.1/images/

Revision history for this message
Jeff Lane  (bladernr) wrote :

And finally with no URL specified

ubuntu@xwing:~$ ./virtualization kvm --debug
Executing KVM Test
WARNING:root:Config file /etc/xdg/virtualization.cfg was not found
WARNING:root:Now looking for ENV variables and command line arguments instead
DEBUG:root:Starting KVM Test
DEBUG:root:No image specified, downloading one now.
DEBUG:root:Downloading xenial-server-cloudimg-amd64-disk1.img, from http://cloud-images.ubuntu.com

Jeff Lane  (bladernr)
Changed in plainbox-provider-checkbox:
status: In Progress → Fix Committed
Changed in plainbox-provider-checkbox:
milestone: none → 0.34.0
Changed in plainbox-provider-checkbox:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.