bdev: Allow userspace-only disk templates
authorDimitris Aragiorgis <dimitris.aragiorgis@gmail.com>
Thu, 30 Jul 2015 19:56:49 +0000 (22:56 +0300)
committerHrvoje Ribicic <riba@google.com>
Mon, 17 Aug 2015 15:12:08 +0000 (15:12 +0000)
commitc4f1bff731492b73515089fdfd1c3482be05439c
treefc6a69a80b8aaacdc748316b7141478a976c39ef
parente147e00863fcf24f40fd8d9c9349d1fbce079c81
bdev: Allow userspace-only disk templates

Until now all implementations at the bdev level require a local
block device on the primary node. Since there are storage
technologies that allow userspace access only without the need of
a block device, (e.g. QEMU + RADOS), this patch makes the
corresponding changes to support this kind of functionality.
Note that for this to work you need corresponding support in the
OS definition.

This patch changes the backend logic so that it can handle the
absence of local block devices.

Finally, it extends the ExtStorage interface to support the above
functionality. Until now the 'attach' script returned the block
device in the first line. With this patch, if this line is empty,
it denotes that a local block device is not available.

An example could be a RADOS provider where the volume does not get
mapped locally (i.e., no /dev/rbdX device) and the attach script
returns two lines: an empty line denoting that no local block device
exists and a second line with the appropriate KVM userspace URI
(i.e. kvm:rbd:<pool>/<volume name>).

Adjust OpInstanceActivateDisks so that a None dev_path is handled
correctly as a return value.

Signed-off-by: Dimitris Aragiorgis <dimitris.aragiorgis@gmail.com>
Reviewed-by: Hrvoje Ribicic <riba@google.com>
doc/design-shared-storage.rst
lib/backend.py
lib/storage/extstorage.py
man/ganeti-extstorage-interface.rst
src/Ganeti/OpCodes.hs