[Kimchi-devel] [PATCH V2] pass params to create method of all Collections.

Paulo Ricardo Paz Vital pvital at linux.vnet.ibm.com
Wed Feb 12 12:04:40 UTC 2014


Is not need change all other classes that extends Collection and
implements create()?  If so, why not do this in this patch?

Thanks and best regards,
-- 
Paulo Ricardo Paz Vital <pvital at linux.vnet.ibm.com>
IBM Linux Technology Center

On Wed, 2014-02-12 at 18:21 +0800, 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