def _transform_response(self, status_code, info=None, obj_name=None, 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]
     plugin_base._raise_contrail_error(info, obj_name)
    def _transform_response(self, status_code, info=None, obj_name=None,
                            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]

        plugin_base._raise_contrail_error(info, obj_name)
    def _transform_response(self, status_code, info=None, obj_name=None,
                            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]
        elif status_code == requests.codes.forbidden:
            info['exception'] = 'NotAuthorized'

        plugin_base._raise_contrail_error(info, obj_name)
    def _delete_resource(self, res_type, context, id):
        """Delete a resource in API server

        This method deletes a resource in the contrail api server
        """

        res_dict = self._encode_resource(resource_id=id)
        LOG.debug("delete_%(res_type)s(): %(id)s", {"res_type": res_type, "id": id})
        status_code, res_info = self._request_backend(context, res_dict, res_type, "DELETE")
        if status_code != requests.codes.ok:
            plugin_base._raise_contrail_error(info=res_info, obj_name=res_type)
    def remove_router_interface(self, context, router_id, interface_info):
        """Delete interface from a router."""

        if not interface_info:
            msg = _("Either subnet_id or port_id must be specified")
            raise exc.BadRequest(resource="router", msg=msg)

        res_dict = self._encode_resource(resource_id=router_id, resource=interface_info)
        status_code, res_info = self._request_backend(context, res_dict, "router", "DELINTERFACE")
        if status_code != requests.codes.ok:
            plugin_base._raise_contrail_error(info=res_info, obj_name="remove_router_interface")
        return res_info
    def _delete_resource(self, res_type, context, id):
        """Delete a resource in API server

        This method deletes a resource in the contrail api server
        """

        res_dict = self._encode_resource(resource_id=id)
        LOG.debug("delete_%(res_type)s(): %(id)s",
                  {'res_type': res_type, 'id': id})
        status_code, res_info = self._request_backend(context, res_dict,
                                                      res_type, 'DELETE')
        if status_code != requests.codes.ok:
            plugin_base._raise_contrail_error(info=res_info,
                                              obj_name=res_type)
    def remove_router_interface(self, context, router_id, interface_info):
        """Delete interface from a router."""

        if not interface_info:
            msg = _("Either subnet_id or port_id must be specified")
            raise BadRequest(resource='router', msg=msg)

        res_dict = self._encode_resource(resource_id=router_id,
                                         resource=interface_info)
        status_code, res_info = self._request_backend(context, res_dict,
                                                      'router', 'DELINTERFACE')
        if status_code != requests.codes.ok:
            plugin_base._raise_contrail_error(info=res_info,
                                              obj_name='remove_router_interface')
        return res_info
    def add_router_interface(self, context, router_id, interface_info):
        """Add interface to a router."""

        if not interface_info:
            msg = _("Either subnet_id or port_id must be specified")
            raise exc.BadRequest(resource="router", msg=msg)

        if "port_id" in interface_info:
            if "subnet_id" in interface_info:
                msg = _("Cannot specify both subnet-id and port-id")
                raise exc.BadRequest(resource="router", msg=msg)

        res_dict = self._encode_resource(resource_id=router_id, resource=interface_info)
        status_code, res_info = self._request_backend(context, res_dict, "router", "ADDINTERFACE")
        if status_code != requests.codes.ok:
            plugin_base._raise_contrail_error(info=res_info, obj_name="add_router_interface")
        return res_info
    def add_router_interface(self, context, router_id, interface_info):
        """Add interface to a router."""

        if not interface_info:
            msg = _("Either subnet_id or port_id must be specified")
            raise BadRequest(resource='router', msg=msg)

        if 'port_id' in interface_info:
            if 'subnet_id' in interface_info:
                msg = _("Cannot specify both subnet-id and port-id")
                raise BadRequest(resource='router', msg=msg)

        res_dict = self._encode_resource(resource_id=router_id,
                                         resource=interface_info)
        status_code, res_info = self._request_backend(context, res_dict,
                                                      'router', 'ADDINTERFACE')
        if status_code != requests.codes.ok:
            plugin_base._raise_contrail_error(info=res_info,
                                              obj_name='add_router_interface')
        return res_info