summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorvladimir.p <vladimir@zadarastorage.com>2011-07-22 15:14:29 -0700
committervladimir.p <vladimir@zadarastorage.com>2011-07-22 15:14:29 -0700
commit9e74803d5eb8a70ba829ac0569f1cd6cd372a6f2 (patch)
treed4d6e421a0e3951e8b9592d97669fc6fb2227fc5 /nova/api
parent3983bca4c9528d286b4e154956ceb749b4875274 (diff)
Reverted volume driver part
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/ec2/cloud.py19
-rw-r--r--nova/api/openstack/contrib/drive_types.py55
-rw-r--r--nova/api/openstack/contrib/virtual_storage_arrays.py77
3 files changed, 78 insertions, 73 deletions
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py
index e31b755de..7d0ce360f 100644
--- a/nova/api/ec2/cloud.py
+++ b/nova/api/ec2/cloud.py
@@ -889,12 +889,15 @@ class CloudController(object):
"%(rpm)s %(capabilities)s %(visible)s"),
locals())
- rv = drive_types.drive_type_create(context, type, size_gb, rpm,
- capabilities, visible, name)
+ rv = drive_types.create(context, type, size_gb, rpm,
+ capabilities, visible, name)
return {'driveTypeSet': [dict(rv)]}
def update_drive_type(self, context, name, **kwargs):
LOG.audit(_("Update Drive Type %s"), name)
+
+ dtype = drive_types.get_by_name(context, name)
+
updatable_fields = ['type',
'size_gb',
'rpm',
@@ -906,16 +909,18 @@ class CloudController(object):
kwargs[field] is not None and \
kwargs[field] != '':
changes[field] = kwargs[field]
+
if changes:
- drive_types.drive_type_update(context, name, **changes)
+ drive_types.update(context, dtype['id'], **changes)
return True
def rename_drive_type(self, context, name, new_name):
- drive_types.drive_type_rename(context, name, new_name)
+ drive_types.rename(context, name, new_name)
return True
def delete_drive_type(self, context, name):
- drive_types.drive_type_delete(context, name)
+ dtype = drive_types.get_by_name(context, name)
+ drive_types.delete(context, dtype['id'])
return True
def describe_drive_types(self, context, names=None, visible=True):
@@ -923,11 +928,11 @@ class CloudController(object):
drives = []
if names is not None:
for name in names:
- drive = drive_types.drive_type_get_by_name(context, name)
+ drive = drive_types.get_by_name(context, name)
if drive['visible'] == visible:
drives.append(drive)
else:
- drives = drive_types.drive_type_get_all(context, visible)
+ drives = drive_types.get_all(context, visible)
# VP-TODO: Change it later to EC2 compatible func (output)
diff --git a/nova/api/openstack/contrib/drive_types.py b/nova/api/openstack/contrib/drive_types.py
index 85b3170cb..590eaaec0 100644
--- a/nova/api/openstack/contrib/drive_types.py
+++ b/nova/api/openstack/contrib/drive_types.py
@@ -21,6 +21,7 @@
from webob import exc
from nova.vsa import drive_types
+from nova import exception
from nova import db
from nova import quota
from nova import log as logging
@@ -32,6 +33,19 @@ from nova.api.openstack import wsgi
LOG = logging.getLogger("nova.api.drive_types")
+def _drive_type_view(drive):
+ """Maps keys for drive types view."""
+ d = {}
+
+ d['id'] = drive['id']
+ d['displayName'] = drive['name']
+ d['type'] = drive['type']
+ d['size'] = drive['size_gb']
+ d['rpm'] = drive['rpm']
+ d['capabilities'] = drive['capabilities']
+ return d
+
+
class DriveTypeController(object):
"""The Drive Type API controller for the OpenStack API."""
@@ -47,25 +61,13 @@ class DriveTypeController(object):
"capabilities",
]}}}
- def _drive_type_view(self, context, drive):
- """Maps keys for drive types view."""
- d = {}
-
- d['id'] = drive['id']
- d['displayName'] = drive['name']
- d['type'] = drive['type']
- d['size'] = drive['size_gb']
- d['rpm'] = drive['rpm']
- d['capabilities'] = drive['capabilities']
- return d
-
def index(self, req):
"""Returns a list of drive types."""
context = req.environ['nova.context']
- drive_types = drive_types.drive_type_get_all(context)
- limited_list = common.limited(drive_types, req)
- res = [self._drive_type_view(context, drive) for drive in limited_list]
+ dtypes = drive_types.get_all(context)
+ limited_list = common.limited(dtypes, req)
+ res = [_drive_type_view(drive) for drive in limited_list]
return {'drive_types': res}
def show(self, req, id):
@@ -73,11 +75,11 @@ class DriveTypeController(object):
context = req.environ['nova.context']
try:
- drive = drive_types.drive_type_get(context, id)
+ drive = drive_types.get(context, id)
except exception.NotFound:
return faults.Fault(exc.HTTPNotFound())
- return {'drive_type': self._drive_type_view(context, drive)}
+ return {'drive_type': _drive_type_view(drive)}
def create(self, req, body):
"""Creates a new drive type."""
@@ -97,14 +99,14 @@ class DriveTypeController(object):
LOG.audit(_("Create drive type %(name)s for "\
"%(type)s:%(size)s:%(rpm)s"), locals(), context=context)
- new_drive = drive_types.drive_type_create(context,
- type=type,
- size_gb=size,
- rpm=rpm,
- capabilities=capabilities,
- name=name)
+ new_drive = drive_types.create(context,
+ type=type,
+ size_gb=size,
+ rpm=rpm,
+ capabilities=capabilities,
+ name=name)
- return {'drive_type': self._drive_type_view(context, new_drive)}
+ return {'drive_type': _drive_type_view(new_drive)}
def delete(self, req, id):
"""Deletes a drive type."""
@@ -113,11 +115,10 @@ class DriveTypeController(object):
LOG.audit(_("Delete drive type with id: %s"), id, context=context)
try:
- drive = drive_types.drive_type_get(context, id)
- drive_types.drive_type_delete(context, drive['name'])
+ drive_types.delete(context, id)
except exception.NotFound:
return faults.Fault(exc.HTTPNotFound())
- return exc.HTTPAccepted()
+ # return exc.HTTPAccepted()
class Drive_types(extensions.ExtensionDescriptor):
diff --git a/nova/api/openstack/contrib/virtual_storage_arrays.py b/nova/api/openstack/contrib/virtual_storage_arrays.py
index eca2d68dd..3c1362f0c 100644
--- a/nova/api/openstack/contrib/virtual_storage_arrays.py
+++ b/nova/api/openstack/contrib/virtual_storage_arrays.py
@@ -39,6 +39,29 @@ FLAGS = flags.FLAGS
LOG = logging.getLogger("nova.api.vsa")
+def _vsa_view(context, vsa, details=False):
+ """Map keys for vsa summary/detailed view."""
+ d = {}
+
+ d['id'] = vsa.get('id')
+ d['name'] = vsa.get('name')
+ d['displayName'] = vsa.get('display_name')
+ d['displayDescription'] = vsa.get('display_description')
+
+ d['createTime'] = vsa.get('created_at')
+ d['status'] = vsa.get('status')
+
+ if 'vsa_instance_type' in vsa:
+ d['vcType'] = vsa['vsa_instance_type'].get('name', None)
+ else:
+ d['vcType'] = None
+
+ d['vcCount'] = vsa.get('vc_count')
+ d['driveCount'] = vsa.get('vol_count')
+
+ return d
+
+
class VsaController(object):
"""The Virtual Storage Array API controller for the OpenStack API."""
@@ -61,34 +84,12 @@ class VsaController(object):
self.vsa_api = vsa.API()
super(VsaController, self).__init__()
- def _vsa_view(self, context, vsa, details=False):
- """Map keys for vsa summary/detailed view."""
- d = {}
-
- d['id'] = vsa['id']
- d['name'] = vsa['name']
- d['displayName'] = vsa['display_name']
- d['displayDescription'] = vsa['display_description']
-
- d['createTime'] = vsa['created_at']
- d['status'] = vsa['status']
-
- if vsa['vsa_instance_type']:
- d['vcType'] = vsa['vsa_instance_type'].get('name', None)
- else:
- d['vcType'] = None
-
- d['vcCount'] = vsa['vc_count']
- d['driveCount'] = vsa['vol_count']
-
- return d
-
def _items(self, req, details):
"""Return summary or detailed list of VSAs."""
context = req.environ['nova.context']
vsas = self.vsa_api.get_all(context)
limited_list = common.limited(vsas, req)
- res = [self._vsa_view(context, vsa, details) for vsa in limited_list]
+ res = [_vsa_view(context, vsa, details) for vsa in limited_list]
return {'vsaSet': res}
def index(self, req):
@@ -108,24 +109,20 @@ class VsaController(object):
except exception.NotFound:
return faults.Fault(exc.HTTPNotFound())
- return {'vsa': self._vsa_view(context, vsa, details=True)}
+ return {'vsa': _vsa_view(context, vsa, details=True)}
def create(self, req, body):
"""Create a new VSA."""
context = req.environ['nova.context']
- if not body:
+ if not body or 'vsa' not in body:
+ LOG.debug(_("No body provided"), context=context)
return faults.Fault(exc.HTTPUnprocessableEntity())
vsa = body['vsa']
display_name = vsa.get('displayName')
- display_description = vsa.get('displayDescription')
- storage = vsa.get('storage')
- shared = vsa.get('shared')
vc_type = vsa.get('vcType', FLAGS.default_vsa_instance_type)
- availability_zone = vsa.get('placement', {}).get('AvailabilityZone')
-
try:
instance_type = instance_types.get_instance_type_by_name(vc_type)
except exception.NotFound:
@@ -134,15 +131,17 @@ class VsaController(object):
LOG.audit(_("Create VSA %(display_name)s of type %(vc_type)s"),
locals(), context=context)
- result = self.vsa_api.create(context,
- display_name=display_name,
- display_description=display_description,
- storage=storage,
- shared=shared,
- instance_type=instance_type,
- availability_zone=availability_zone)
+ args = dict(display_name=display_name,
+ display_description=vsa.get('displayDescription'),
+ instance_type=instance_type,
+ storage=vsa.get('storage'),
+ shared=vsa.get('shared'),
+ availability_zone=vsa.get('placement', {}).\
+ get('AvailabilityZone'))
- return {'vsa': self._vsa_view(context, result, details=True)}
+ result = self.vsa_api.create(context, **args)
+
+ return {'vsa': _vsa_view(context, result, details=True)}
def delete(self, req, id):
"""Delete a VSA."""
@@ -154,7 +153,7 @@ class VsaController(object):
self.vsa_api.delete(context, vsa_id=id)
except exception.NotFound:
return faults.Fault(exc.HTTPNotFound())
- return exc.HTTPAccepted()
+ # return exc.HTTPAccepted()
class VsaVolumeDriveController(volumes.VolumeController):