summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoji Iida <iida.koji@lab.ntt.co.jp>2011-01-14 13:59:06 +0900
committerKoji Iida <iida.koji@lab.ntt.co.jp>2011-01-14 13:59:06 +0900
commit449913debbe8533d734b618394f5c8b4eeece936 (patch)
tree9b3ae6e811e90bbdd5cdb16cce85617105f3afb9
parent4ff82fe82729c46e64242a3a3a8aea1aff6ffeb1 (diff)
parentc468658d553d3fd9cb8d9d39c7dcbc3f2ffbc640 (diff)
downloadnova-449913debbe8533d734b618394f5c8b4eeece936.tar.gz
nova-449913debbe8533d734b618394f5c8b4eeece936.tar.xz
nova-449913debbe8533d734b618394f5c8b4eeece936.zip
Merged to rev.563
-rw-r--r--Authors2
-rw-r--r--nova/volume/driver.py49
2 files changed, 50 insertions, 1 deletions
diff --git a/Authors b/Authors
index 74736562e..bcb2cd0fb 100644
--- a/Authors
+++ b/Authors
@@ -1,4 +1,3 @@
-
Andy Smith <code@term.ie>
Anne Gentle <anne@openstack.org>
Anthony Young <sleepsonthefloor@gmail.com>
@@ -34,6 +33,7 @@ Matt Dietz <matt.dietz@rackspace.com>
Michael Gundlach <michael.gundlach@rackspace.com>
Monsyne Dragon <mdragon@rackspace.com>
Monty Taylor <mordred@inaugust.com>
+MORITA Kazutaka <morita.kazutaka@gmail.com>
Nachi Ueno <ueno.nachi@lab.ntt.co.jp> <openstack@lab.ntt.co.jp> <nati.ueno@gmail.com> <nova@u4>
Paul Voccio <paul@openstack.org>
Rick Clark <rick@openstack.org>
diff --git a/nova/volume/driver.py b/nova/volume/driver.py
index 44bfeaf0c..71fe18a40 100644
--- a/nova/volume/driver.py
+++ b/nova/volume/driver.py
@@ -371,3 +371,52 @@ class RBDDriver(VolumeDriver):
def undiscover_volume(self, volume):
"""Undiscover volume on a remote host"""
pass
+
+
+class SheepdogDriver(VolumeDriver):
+ """Executes commands relating to Sheepdog Volumes"""
+
+ def check_for_setup_error(self):
+ """Returns an error if prerequisites aren't met"""
+ try:
+ (out, err) = self._execute("collie cluster info")
+ if not out.startswith('running'):
+ raise exception.Error(_("Sheepdog is not working: %s") % out)
+ except exception.ProcessExecutionError:
+ raise exception.Error(_("Sheepdog is not working"))
+
+ def create_volume(self, volume):
+ """Creates a sheepdog volume"""
+ if int(volume['size']) == 0:
+ sizestr = '100M'
+ else:
+ sizestr = '%sG' % volume['size']
+ self._try_execute("qemu-img create sheepdog:%s %s" %
+ (volume['name'], sizestr))
+
+ def delete_volume(self, volume):
+ """Deletes a logical volume"""
+ self._try_execute("collie vdi delete %s" % volume['name'])
+
+ def local_path(self, volume):
+ return "sheepdog:%s" % volume['name']
+
+ def ensure_export(self, context, volume):
+ """Safely and synchronously recreates an export for a logical volume"""
+ pass
+
+ def create_export(self, context, volume):
+ """Exports the volume"""
+ pass
+
+ def remove_export(self, context, volume):
+ """Removes an export for a logical volume"""
+ pass
+
+ def discover_volume(self, volume):
+ """Discover volume on a remote host"""
+ return "sheepdog:%s" % volume['name']
+
+ def undiscover_volume(self, volume):
+ """Undiscover volume on a remote host"""
+ pass