def __init__(self, message=None, **kwargs):
        self.kwargs = kwargs
        self.kwargs["message"] = message

        if "code" not in self.kwargs:
            try:
                self.kwargs["code"] = self.code
            except AttributeError:
                pass

        for k, v in self.kwargs.items():
            if isinstance(v, Exception):
                self.kwargs[k] = six.text_type(v)

        if self._should_format():
            try:
                message = self.message % kwargs

            except Exception:
                # kwargs doesn't match a variable in the message
                # log the issue and the kwargs
                LOG.exception(_LE("Exception in string format operation"))
                for name, value in kwargs.items():
                    LOG.error(_LE("%(name)s: %(value)s"), {"name": name, "value": value})
                # at least get the core message out if something happened
                message = self.message
        elif isinstance(message, Exception):
            message = six.text_type(message)

        # NOTE(luisg): We put the actual message in 'msg' so that we can access
        # it, because if we try to access the message via 'message' it will be
        # overshadowed by the class' message attribute
        self.msg = message
        super(NetAppLibException, self).__init__(message)
Example #2
0
 def invoke_service(self,
                    method='GET',
                    url=None,
                    params=None,
                    data=None,
                    headers=None,
                    timeout=None,
                    verify=False):
     url = url or self._endpoint
     try:
         response = self.conn.request(method,
                                      url,
                                      params,
                                      data,
                                      headers=headers,
                                      timeout=timeout,
                                      verify=verify)
     # Catching error conditions other than the perceived ones.
     # Helps propagating only known exceptions back to the caller.
     except Exception as e:
         LOG.exception(
             _LE("Unexpected error while invoking web service."
                 " Error - %s."), e)
         raise WebServicesException(_("Invoking web service failed."))
     self._eval_response(response)
     return response
 def invoke_service(self, method="GET", url=None, params=None, data=None, headers=None, timeout=None, verify=False):
     url = url or self._endpoint
     try:
         response = self.conn.request(method, url, params, data, headers=headers, timeout=timeout, verify=verify)
     # Catching error conditions other than the perceived ones.
     # Helps propagating only known exceptions back to the caller.
     except Exception as e:
         LOG.exception(_LE("Unexpected error while invoking web service." " Error - %s."), e)
         raise WebServicesException(_("Invoking web service failed."))
     self._eval_response(response)
     return response
Example #4
0
    def __init__(self, message=None, **kwargs):
        self.kwargs = kwargs
        self.kwargs['message'] = message

        if 'code' not in self.kwargs:
            try:
                self.kwargs['code'] = self.code
            except AttributeError:
                pass

        for k, v in self.kwargs.items():
            if isinstance(v, Exception):
                self.kwargs[k] = six.text_type(v)

        if self._should_format():
            try:
                message = self.message % kwargs

            except Exception:
                # kwargs doesn't match a variable in the message
                # log the issue and the kwargs
                LOG.exception(_LE('Exception in string format operation'))
                for name, value in kwargs.items():
                    LOG.error(_LE("%(name)s: %(value)s"), {
                        'name': name,
                        'value': value
                    })
                # at least get the core message out if something happened
                message = self.message
        elif isinstance(message, Exception):
            message = six.text_type(message)

        # NOTE(luisg): We put the actual message in 'msg' so that we can access
        # it, because if we try to access the message via 'message' it will be
        # overshadowed by the class' message attribute
        self.msg = message
        super(NetAppLibException, self).__init__(message)