summaryrefslogtreecommitdiffstats
path: root/nova/volume/api.py
diff options
context:
space:
mode:
authorvladimir.p <vladimir@zadarastorage.com>2011-07-22 16:05:14 -0700
committervladimir.p <vladimir@zadarastorage.com>2011-07-22 16:05:14 -0700
commit2b9181632786bdbb92911b4a6e7180cb06c8f9d8 (patch)
tree4bae762b9d355d8959203c7d945c60c9b8bdacca /nova/volume/api.py
parent0750370553c3ce40fdd5e88d9616ddb0fbeedbc1 (diff)
parent15e7084b7a8378da215d43659f310195f841ef01 (diff)
downloadnova-2b9181632786bdbb92911b4a6e7180cb06c8f9d8.tar.gz
nova-2b9181632786bdbb92911b4a6e7180cb06c8f9d8.tar.xz
nova-2b9181632786bdbb92911b4a6e7180cb06c8f9d8.zip
merge with 1305
Diffstat (limited to 'nova/volume/api.py')
-rw-r--r--nova/volume/api.py15
1 files changed, 12 insertions, 3 deletions
diff --git a/nova/volume/api.py b/nova/volume/api.py
index f81222017..7ed7ff5af 100644
--- a/nova/volume/api.py
+++ b/nova/volume/api.py
@@ -56,7 +56,7 @@ class API(base.Base):
availability_zone = FLAGS.storage_availability_zone
if to_vsa_id is None:
- # VP-TODO: for now don't check quotas for BE volumes
+ # Check quotas for non-VSA volumes only
if quota.allowed_volumes(context, 1, size) < 1:
pid = context.project_id
LOG.warn(_("Quota exceeeded for %(pid)s, tried to create"
@@ -168,9 +168,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 = {
@@ -192,6 +193,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":