summaryrefslogtreecommitdiffstats
path: root/nova/volume/api.py
diff options
context:
space:
mode:
authorIsaku Yamahata <yamahata@valinux.co.jp>2011-06-22 12:54:22 +0900
committerIsaku Yamahata <yamahata@valinux.co.jp>2011-06-22 12:54:22 +0900
commit91cc2d5f974d67d91e1e783aaec105c489a47cce (patch)
tree10144de7cd5ec18534f38462ee5d844ab2345edd /nova/volume/api.py
parent3a83471ec002127a84d319e397ce54e49bd696a1 (diff)
downloadnova-91cc2d5f974d67d91e1e783aaec105c489a47cce.tar.gz
nova-91cc2d5f974d67d91e1e783aaec105c489a47cce.tar.xz
nova-91cc2d5f974d67d91e1e783aaec105c489a47cce.zip
volume/api: introduce create_snapshot_force()
Introduce create_snapshot_force() which create snapshot even when the volume is in in-use. This is needed for CreateImage with no_reboot=true.
Diffstat (limited to 'nova/volume/api.py')
-rw-r--r--nova/volume/api.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/nova/volume/api.py b/nova/volume/api.py
index 7d27abff9..cfc274c77 100644
--- a/nova/volume/api.py
+++ b/nova/volume/api.py
@@ -140,9 +140,10 @@ class API(base.Base):
{"method": "remove_volume",
"args": {'volume_id': volume_id}})
- def create_snapshot(self, context, volume_id, name, description):
+ def _create_snapshot(self, context, volume_id, name, description,
+ force=False):
volume = self.get(context, volume_id)
- if volume['status'] != "available":
+ if ((not force) and (volume['status'] != "available")):
raise exception.ApiError(_("Volume status must be available"))
options = {
@@ -164,6 +165,14 @@ class API(base.Base):
"snapshot_id": snapshot['id']}})
return snapshot
+ def create_snapshot(self, context, volume_id, name, description):
+ return self._create_snapshot(context, volume_id, name, description,
+ False)
+
+ def create_snapshot_force(self, context, volume_id, name, description):
+ return self._create_snapshot(context, volume_id, name, description,
+ True)
+
def delete_snapshot(self, context, snapshot_id):
snapshot = self.get_snapshot(context, snapshot_id)
if snapshot['status'] != "available":