[Kimchi-devel] [PATCH V2] pass params to create method of all Collections.
Aline Manera
alinefm at linux.vnet.ibm.com
Wed Feb 12 11:54:48 UTC 2014
Reviewed-by: Aline Manera <alinefm at linux.vnet.ibm.com>
On 02/12/2014 08:21 AM, shaohef at linux.vnet.ibm.com wrote:
> From: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
>
> We can pass params as an argument to create method, do not need call
> parse_request in every create method.
>
> create means the HTTP POST method, and POST requires body.
> So every create needs params parsed from body.
> But we do not need to parse params in every create.
>
> Signed-off-by: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
> ---
> src/kimchi/control/base.py | 8 +++-----
> src/kimchi/control/storagepools.py | 5 ++---
> 2 files changed, 5 insertions(+), 8 deletions(-)
>
> diff --git a/src/kimchi/control/base.py b/src/kimchi/control/base.py
> index 5c8ee82..6ce8113 100644
> --- a/src/kimchi/control/base.py
> +++ b/src/kimchi/control/base.py
> @@ -196,14 +196,13 @@ class Collection(object):
> self.resource_args = []
> self.model_args = []
>
> - def create(self, *args):
> + def create(self, params, *args):
> try:
> create = getattr(self.model, model_fn(self, 'create'))
> except AttributeError:
> error = 'Create is not allowed for %s' % get_class_name(self)
> raise cherrypy.HTTPError(405, error)
>
> - params = parse_request()
> validate_params(params, self, 'create')
> args = self.model_args + [params]
> name = create(*args)
> @@ -273,7 +272,7 @@ class Collection(object):
>
> elif method == 'POST':
> try:
> - return self.create(*args)
> + return self.create(parse_request(), *args)
> except MissingParameter, param:
> error = "Missing parameter: '%s'" % param
> raise cherrypy.HTTPError(400, error)
> @@ -296,14 +295,13 @@ class AsyncCollection(Collection):
> def __init__(self, model):
> super(AsyncCollection, self).__init__(model)
>
> - def create(self, *args):
> + def create(self, params, *args):
> try:
> create = getattr(self.model, model_fn(self, 'create'))
> except AttributeError:
> error = 'Create is not allowed for %s' % get_class_name(self)
> raise cherrypy.HTTPError(405, error)
>
> - params = parse_request()
> args = self.model_args + [params]
> task = create(*args)
> cherrypy.response.status = 202
> diff --git a/src/kimchi/control/storagepools.py b/src/kimchi/control/storagepools.py
> index af10acd..ea19609 100644
> --- a/src/kimchi/control/storagepools.py
> +++ b/src/kimchi/control/storagepools.py
> @@ -28,7 +28,7 @@ import cherrypy
>
> from kimchi.control.base import Collection, Resource
> from kimchi.control.storagevolumes import IsoVolumes, StorageVolumes
> -from kimchi.control.utils import get_class_name, model_fn, parse_request
> +from kimchi.control.utils import get_class_name, model_fn
> from kimchi.control.utils import validate_params
> from kimchi.model.storagepools import ISO_POOL_NAME
> from kimchi.control.utils import UrlSubNode
> @@ -42,14 +42,13 @@ class StoragePools(Collection):
> isos = IsoPool(model)
> setattr(self, ISO_POOL_NAME, isos)
>
> - def create(self, *args):
> + def create(self, params, *args):
> try:
> create = getattr(self.model, model_fn(self, 'create'))
> except AttributeError:
> error = 'Create is not allowed for %s' % get_class_name(self)
> raise cherrypy.HTTPError(405, error)
>
> - params = parse_request()
> validate_params(params, self, 'create')
> args = self.model_args + [params]
> name = create(*args)
More information about the Kimchi-devel
mailing list