From 03c081f6e724a2e4a33523c01855d20ac778f72a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89douard=20Thuleau?= Date: Thu, 24 Mar 2016 11:30:39 +0100 Subject: [PATCH] Remove 'propagate_exc' parameter in _get_vrouter_config() A 'propagate_exc' parameter was added to v2 plugin resources action methods but was not implemented on the v3 plugin. Since, the v3 plugin cannot use anymore the method '_get_vrouter_config' because it does not provide the 'propagate_exc' parameter. That patch remove the 'propagate_exc' parameter to realign v2 and v3 on a common plugin interface class/methods and uses the '_raise_contrail_error' method to propagate the 'VirtualRouterNotFound' exception. Change-Id: I5e6afe7a817e1ff99a559598f7c8ac0ce668398c Closes-Bug: #1561135 --- .../plugins/opencontrail/contrail_plugin.py | 27 +++++++------------ .../opencontrail/contrail_plugin_base.py | 7 +++-- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/neutron_plugin_contrail/plugins/opencontrail/contrail_plugin.py b/neutron_plugin_contrail/plugins/opencontrail/contrail_plugin.py index 2126473..556cdc8 100644 --- a/neutron_plugin_contrail/plugins/opencontrail/contrail_plugin.py +++ b/neutron_plugin_contrail/plugins/opencontrail/contrail_plugin.py @@ -227,20 +227,17 @@ def _prune(self, resource_dict, fields): return resource_dict def _transform_response(self, status_code, info=None, obj_name=None, - fields=None, propagate_exc=False): + fields=None): if status_code == requests.codes.ok: if not isinstance(info, list): return self._prune(info, fields) else: return [self._prune(items, fields) for items in info] - if propagate_exc: - raise HttpResponseError(info) - plugin_base._raise_contrail_error(info, obj_name) - def _create_resource(self, res_type, context, res_data, propagate_exc=False): + def _create_resource(self, res_type, context, res_data): """Create a resource in API server. This method encodes neutron model, and sends it to the @@ -255,14 +252,13 @@ def _create_resource(self, res_type, context, res_data, propagate_exc=False): status_code, res_info = self._request_backend(context, res_dict, res_type, 'CREATE') res_dicts = self._transform_response(status_code, info=res_info, - obj_name=res_type, - propagate_exc=propagate_exc) + obj_name=res_type) LOG.debug("create_%(res_type)s(): %(res_dicts)s", {'res_type': res_type, 'res_dicts': res_dicts}) return res_dicts - def _get_resource(self, res_type, context, id, fields, propagate_exc=False): + def _get_resource(self, res_type, context, id, fields): """Get a resource from API server. This method gets a resource from the contrail api server @@ -272,14 +268,13 @@ def _get_resource(self, res_type, context, id, fields, propagate_exc=False): status_code, res_info = self._request_backend(context, res_dict, res_type, 'READ') res_dicts = self._transform_response(status_code, info=res_info, - fields=fields, obj_name=res_type, - propagate_exc=propagate_exc) + fields=fields, obj_name=res_type) LOG.debug("get_%(res_type)s(): %(res_dicts)s", {'res_type': res_type, 'res_dicts': res_dicts}) return res_dicts - def _update_resource(self, res_type, context, id, res_data, propagate_exc=False): + def _update_resource(self, res_type, context, id, res_data): """Update a resource in API server. This method updates a resource in the contrail api server @@ -290,14 +285,13 @@ def _update_resource(self, res_type, context, id, res_data, propagate_exc=False) status_code, res_info = self._request_backend(context, res_dict, res_type, 'UPDATE') res_dicts = self._transform_response(status_code, info=res_info, - obj_name=res_type, - propagate_exc=propagate_exc) + obj_name=res_type) LOG.debug("update_%(res_type)s(): %(res_dicts)s", {'res_type': res_type, 'res_dicts': res_dicts}) return res_dicts - def _delete_resource(self, res_type, context, id, propagate_exc=False): + def _delete_resource(self, res_type, context, id): """Delete a resource in API server This method deletes a resource in the contrail api server @@ -312,13 +306,12 @@ def _delete_resource(self, res_type, context, id, propagate_exc=False): plugin_base._raise_contrail_error(info=res_info, obj_name=res_type) - def _list_resource(self, res_type, context, filters, fields, propagate_exc=False): + def _list_resource(self, res_type, context, filters, fields): res_dict = self._encode_resource(filters=filters, fields=fields) status_code, res_info = self._request_backend(context, res_dict, res_type, 'READALL') res_dicts = self._transform_response(status_code, info=res_info, - fields=fields, obj_name=res_type, - propagate_exc=propagate_exc) + fields=fields, obj_name=res_type) LOG.debug( "get_%(res_type)s(): filters: %(filters)r data: %(res_dicts)r", {'res_type': res_type, 'filters': filters, diff --git a/neutron_plugin_contrail/plugins/opencontrail/contrail_plugin_base.py b/neutron_plugin_contrail/plugins/opencontrail/contrail_plugin_base.py index 64f238f..f08561e 100644 --- a/neutron_plugin_contrail/plugins/opencontrail/contrail_plugin_base.py +++ b/neutron_plugin_contrail/plugins/opencontrail/contrail_plugin_base.py @@ -88,6 +88,8 @@ def _raise_contrail_error(info, obj_name): if exc_name: if exc_name == 'BadRequest' and 'resource' not in info: info['resource'] = obj_name + if exc_name == 'VirtualRouterNotFound': + raise HttpResponseError(info) if hasattr(exc, exc_name): raise getattr(exc, exc_name)(**info) if hasattr(l3, exc_name): @@ -360,8 +362,7 @@ def _update_ips_for_port(self, context, network_id, port_id, original_ips, return new_ips, prev_ips def _get_vrouter_config(self, context, id, fields=None): - return self._get_resource('virtual_router', context, id, fields, - propagate_exc=True) + return self._get_resource('virtual_router', context, id, fields) def _list_vrouters(self, context, filters=None, fields=None): return self._list_resource('virtual_router', context, filters, fields) @@ -439,6 +440,8 @@ def _is_dpdk_enabled(self, context, port): except HttpResponseError as e: if e.response_info['exception'] == 'VirtualRouterNotFound': return False + else: + raise e return vrouter['dpdk_enabled']