From 877a4773d8fde06e507365cda3f622c62900f28e Mon Sep 17 00:00:00 2001 From: Salvatore Orlando Date: Tue, 30 Aug 2011 18:06:14 +0100 Subject: [PATCH] Avoiding deserializing body multiple times with several parameters --- quantum/api/api_common.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) 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 -- 2.45.2