virtual_fuel: initial support for remote libvirt 13/14713/3
authorJosep Puigdemont <josep.puigdemont@enea.com>
Wed, 4 May 2016 12:27:23 +0000 (14:27 +0200)
committerJosep Puigdemont <josep.puigdemont@gmail.com>
Wed, 15 Jun 2016 16:21:06 +0000 (16:21 +0000)
commite9838d6a94d3b49c8a85d42fbf5cddc69af6cdc5
treef310fbc0fe1e4f5804bd579962df8405d62f3654
parent41d27cb3772d6528924eadea8ce2e99a7395496f
virtual_fuel: initial support for remote libvirt

With this patch it should be possible to create a fuel VM on a remote
libvirt server by properly defining the LIBVIRT_DEFAULT_URI [1]
environment variable. If the variable is not defined, then there should
be no percievable change in behaviour for the script.

This patch introduces the ability to create volumes (images) on a
remote libvirt host where the Fuel VM is to be deployed. For now
the volumes are created by default in a pool named jenkins, but
the idea is to allow this to be configured, probably in the POD's
DHA file.

Since all virsh commands honor LIBVIRT_DEFAULT_URI, we use this
environment variable to detect wheter we should create a volume or not.
The rationale being that the variable will only be set if the user wants
to to do the VM deployment on a remote libvirt host.

We need to create a volume because we can not rely on being able to
access the remote server's file system directly.

The images are then transferred to the libvirt host using virsh
commands. All this could also be done using scp and a user directory
on the host machine, but using pools allows us to take advantage of
libvirt's policies and file permissions.

CHANGE: when LIBVIRT_DEFAULT_URI is defined, the script will not check
for the presence of the required PXE bridge. This will still be checked
when the Fuel VM is started and the bridge not found, but this happens
at a later point than it does today.

CHANGE: before this patch, the file system image was named like the VM:
vm_name.raw. This patch introduces a change and adds a timestamp suffix
to the image: vm_name-timestamp.raw. This is so to avoid collisions with
an image with the same name on the remote pool (two PODs may be using
the same pool). It may also be useful to keep around old file system
images.

FIXME: This patch requires a pool named "jenkins" in the remote libvirt
server, and it will fail if it is not present. This should be
configurable.

Notice though that we can still define LIBVIRT_DEFAULT_URI as
"qemu:///system" to create the Fuel VM on the local host.

[1] https://libvirt.org/remote.html#Remote_URI_reference

Change-Id: I40925ed31337d3ad9cf505f284f5c3d14e9129a0
Signed-off-by: Josep Puigdemont <josep.puigdemont@enea.com>
deploy/deploy.py
deploy/dha_adapters/libvirt_adapter.py
deploy/environments/virtual_fuel.py
deploy/install_fuel_master.py