From: Salvatore Orlando Date: Tue, 30 Aug 2011 17:06:14 +0000 (+0100) Subject: Avoiding deserializing body multiple times with several parameters X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=877a4773d8fde06e507365cda3f622c62900f28e;p=openstack-build%2Fneutron-build.git Avoiding deserializing body multiple times with several parameters --- diff --git a/quantum/api/api_common.py b/quantum/api/api_common.py index 8272bc55a..cbfcbe144 100644 --- a/quantum/api/api_common.py +++ b/quantum/api/api_common.py @@ -35,22 +35,22 @@ class QuantumController(wsgi.Controller): def _parse_request_params(self, req, params): results = {} - for param in params: - param_name = param['param-name'] - param_value = None - # Parameters are expected to be in request body only - if req.body: - des_body = self._deserialize(req.body, - req.best_match_content_type()) - data = des_body and des_body.get(self._resource_name, None) - if not data: - msg = ("Failed to parse request. Resource: " + - self._resource_name + " not found in request body") - for line in msg.split('\n'): - LOG.error(line) + data = {} + # Parameters are expected to be in request body only + if req.body: + des_body = self._deserialize(req.body, + req.best_match_content_type()) + data = des_body and des_body.get(self._resource_name, None) + if not data: + msg = ("Failed to parse request. Resource: " + + self._resource_name + " not found in request body") + for line in msg.split('\n'): + LOG.error(line) raise exc.HTTPBadRequest(msg) - param_value = data.get(param_name, None) + for param in params: + param_name = param['param-name'] + param_value = data.get(param_name, None) # If the parameter wasn't found and it was required, return 400 if param_value is None and param['required']: msg = ("Failed to parse request. " + @@ -59,4 +59,5 @@ class QuantumController(wsgi.Controller): LOG.error(line) raise exc.HTTPBadRequest(msg) results[param_name] = param_value or param.get('default-value') + return results