Exemplo n.º 1
0
    def _wrap_handler(self, handler, environ):
        """Catch exceptions and encode response of handler"""

        # generate response
        try:
            response = handler(environ)
            # wrap response in a singleton tuple
            response = (response, )
            response = dumps(response, methodresponse=1, marshaller=Marshaller)
        except Fault as fault:
            self.traceback = True
            response = dumps(fault, marshaller=Marshaller)
        except:
            self.traceback = True
            # report exception back to server
            e_class, e = sys.exc_info()[:2]
            faultCode = getattr(e_class, 'faultCode', 1)
            tb_type = context.opts.get('KojiTraceback', None)
            tb_str = ''.join(traceback.format_exception(*sys.exc_info()))
            if issubclass(e_class, koji.GenericError):
                if context.opts.get('KojiDebug'):
                    if tb_type == "extended":
                        faultString = koji.format_exc_plus()
                    else:
                        faultString = tb_str
                else:
                    faultString = str(e)
            else:
                if tb_type == "normal":
                    faultString = tb_str
                elif tb_type == "extended":
                    faultString = koji.format_exc_plus()
                else:
                    faultString = "%s: %s" % (e_class, e)
            self.logger.warning(tb_str)
            response = dumps(Fault(faultCode, faultString),
                             marshaller=Marshaller)

        return response
Exemplo n.º 2
0
 def _log_exception(self):
     e_class, e = sys.exc_info()[:2]
     faultCode = getattr(e_class, 'faultCode', 1)
     tb_type = context.opts.get('KojiTraceback', None)
     tb_str = ''.join(traceback.format_exception(*sys.exc_info()))
     if issubclass(e_class, koji.GenericError):
         if context.opts.get('KojiDebug'):
             if tb_type == "extended":
                 faultString = koji.format_exc_plus()
             else:
                 faultString = tb_str
         else:
             faultString = str(e)
     else:
         if tb_type == "normal":
             faultString = tb_str
         elif tb_type == "extended":
             faultString = koji.format_exc_plus()
         else:
             faultString = "%s: %s" % (e_class, e)
     self.logger.warning(tb_str)
     return faultCode, faultString
Exemplo n.º 3
0
    def _wrap_handler(self, handler, environ):
        """Catch exceptions and encode response of handler"""

        # generate response
        try:
            response = handler(environ)
            # wrap response in a singleton tuple
            response = (response,)
            response = dumps(response, methodresponse=1, marshaller=Marshaller)
        except Fault as fault:
            self.traceback = True
            response = dumps(fault, marshaller=Marshaller)
        except:
            self.traceback = True
            # report exception back to server
            e_class, e = sys.exc_info()[:2]
            faultCode = getattr(e_class, 'faultCode', 1)
            tb_type = context.opts.get('KojiTraceback', None)
            tb_str = ''.join(traceback.format_exception(*sys.exc_info()))
            if issubclass(e_class, koji.GenericError):
                if context.opts.get('KojiDebug'):
                    if tb_type == "extended":
                        faultString = koji.format_exc_plus()
                    else:
                        faultString = tb_str
                else:
                    faultString = str(e)
            else:
                if tb_type == "normal":
                    faultString = tb_str
                elif tb_type == "extended":
                    faultString = koji.format_exc_plus()
                else:
                    faultString = "%s: %s" % (e_class, e)
            self.logger.warning(tb_str)
            response = dumps(Fault(faultCode, faultString), marshaller=Marshaller)

        return response
Exemplo n.º 4
0
            response = (response, )
            response = dumps(response, methodresponse=1, allow_none=1)
        except Fault, fault:
            self.traceback = True
            response = dumps(fault)
        except:
            self.traceback = True
            # report exception back to server
            e_class, e = sys.exc_info()[:2]
            faultCode = getattr(e_class, 'faultCode', 1)
            tb_type = context.opts.get('KojiTraceback', None)
            tb_str = ''.join(traceback.format_exception(*sys.exc_info()))
            if issubclass(e_class, koji.GenericError):
                if context.opts.get('KojiDebug'):
                    if tb_type == "extended":
                        faultString = koji.format_exc_plus()
                    else:
                        faultString = tb_str
                else:
                    faultString = str(e)
            else:
                if tb_type == "normal":
                    faultString = tb_str
                elif tb_type == "extended":
                    faultString = koji.format_exc_plus()
                else:
                    faultString = "%s: %s" % (e_class, e)
            self.logger.warning(tb_str)
            response = dumps(Fault(faultCode, faultString))

        return response
Exemplo n.º 5
0
            response = (response,)
            response = dumps(response, methodresponse=1, allow_none=1)
        except Fault, fault:
            self.traceback = True
            response = dumps(fault)
        except:
            self.traceback = True
            # report exception back to server
            e_class, e = sys.exc_info()[:2]
            faultCode = getattr(e_class,'faultCode',1)
            tb_type = context.opts.get('KojiTraceback',None)
            tb_str = ''.join(traceback.format_exception(*sys.exc_info()))
            if issubclass(e_class, koji.GenericError):
                if context.opts.get('KojiDebug'):
                    if tb_type == "extended":
                        faultString = koji.format_exc_plus()
                    else:
                        faultString = tb_str
                else:
                    faultString = str(e)
            else:
                if tb_type == "normal":
                    faultString = tb_str
                elif tb_type == "extended":
                    faultString = koji.format_exc_plus()
                else:
                    faultString = "%s: %s" % (e_class,e)
            self.logger.warning(tb_str)
            response = dumps(Fault(faultCode, faultString))

        return response