Add a sheepdog backend for the storage driver

This patch brings support to manage sheepdog pools and volumes to libvirt.
It uses the "collie" command-line utility that comes with sheepdog for that.

A sheepdog pool in libvirt maps to a sheepdog cluster.
It needs a host and port to connect to, which in most cases
is just going to be the default of localhost on port 7000.

A sheepdog volume in libvirt maps to a sheepdog vdi.
To create one specify the pool, a name and the capacity.
Volumes can also be resized later.

In the volume XML the vdi name has to be put into the <target><path>.
To use the volume as a disk source for virtual machines specify
the vdi name as "name" attribute of the <source>.
The host and port information from the pool are specified inside the host tag.

  <disk type='network'>
    ...
    <source protocol="sheepdog" name="vdi_name">
      <host name="localhost" port="7000"/>
    </source>
  </disk>

To work right this patch parses the output of collie,
so it relies on the raw output option. There recently was a bug which caused
size information to be reported wrong. This is fixed upstream already and
will be in the next release.

Signed-off-by: Sebastian Wiedenroth <wiedi@frubar.net>
This commit is contained in:
Sebastian Wiedenroth authored and Daniel P. Berrange committed 2012-07-18 20:08:27 +01:00
1 parent e00184291e
commit 29bc4fe646
24 files changed
+800 -16

No files matched your search

@@ -0,0 +1,8 @@
<pool type='sheepdog'>
<name>sheepdog</name>
<uuid>65fcba04-5b13-bd93-cff3-52ce48e11ad7</uuid>
<source>
<host name='localhost' port='7000'/>
<name>sheepdog</name>
</source>
</pool>