def call_function(self, method, params): # short-circuit everything if sending a system-wide message. if CFG.SEND_MESSAGE_TO_ALL: # Make sure the applet doesn't see the message if method == 'applet.poll_status': return self.response({ 'checkin_interval': 3600, 'server_status': 'normal' }) if method == 'applet.poll_packages': return self.response({'use_cached_copy': 1}) # Fetch global message being sent to clients if applicable. msg = open(CFG.MESSAGE_TO_ALL).read() log_debug(3, "Sending message to all clients: %s" % msg) # Send the message as a fault. response = xmlrpclib.Fault( -1, _("IMPORTANT MESSAGE FOLLOWS:\n%s") % msg) # and now send everything back ret = self.response(response) log_debug(4, "Leave with return value", ret) return ret # req: where the response is sent to log_debug(2, method) # Now we have the reference, call away force_rollback = 1 try: rhnSQL.clear_log_id() # now get the function reference and call it func = self.method_ref(method) response = func(*params) except (TypeError, ValueError, KeyError, IndexError, UnknownXML): # report exception back to server fault = 1 if sys.exc_type == UnknownXML: fault = -1 e_type, e_value = sys.exc_info()[:2] response = xmlrpclib.Fault( fault, _("While running '%s': caught\n%s : %s\n") % (method, e_type, e_value)) Traceback(method, self.req, extra="Response sent back to the caller:\n%s\n" % (response.faultString, ), severity="notification") except rhnNotFound, e: return apache.HTTP_NOT_FOUND
def call_function(self, method, params): # short-circuit everything if sending a system-wide message. if CFG.SEND_MESSAGE_TO_ALL: # Make sure the applet doesn't see the message if method == 'applet.poll_status': return self.response({ 'checkin_interval' : 3600, 'server_status' : 'normal' }) if method == 'applet.poll_packages': return self.response({ 'use_cached_copy' : 1 }) # Fetch global message being sent to clients if applicable. msg = open(CFG.MESSAGE_TO_ALL).read() log_debug(3, "Sending message to all clients: %s" % msg) # Send the message as a fault. response = xmlrpclib.Fault( -1, _("IMPORTANT MESSAGE FOLLOWS:\n%s") % msg) # and now send everything back ret = self.response(response) log_debug(4, "Leave with return value", ret) return ret # req: where the response is sent to log_debug(2, method) # Now we have the reference, call away force_rollback = 1 try: rhnSQL.clear_log_id() # now get the function reference and call it func = self.method_ref(method) if len(params): response = apply(func, params) else: response = func() except (TypeError, ValueError, KeyError, IndexError, UnknownXML): # report exception back to server fault = 1 if sys.exc_type == UnknownXML: fault = -1 e_type, e_value = sys.exc_info()[:2] response = xmlrpclib.Fault(fault, _( "While running '%s': caught\n%s : %s\n") % ( method, e_type, e_value)) Traceback(method, self.req, extra="Response sent back to the caller:\n%s\n" % ( response.faultString,), severity="notification") except rhnNotFound, e: return apache.HTTP_NOT_FOUND
Traceback(method, self.req, extra="SQL Error generated: %s" % e, severity="schema") return apache.HTTP_INTERNAL_SERVER_ERROR except Exception, e: log_error("Unhandled exception", e) rhnSQL.rollback() # otherwise we do a full stop Traceback(method, self.req, severity="unhandled") return apache.HTTP_INTERNAL_SERVER_ERROR else: # if no exception, we don't need to rollback force_rollback = 0 if force_rollback: rhnSQL.rollback() rhnSQL.clear_log_id() # and now send everything back ret = self.response(response) log_debug(4, "Leave with return value", ret) return ret # process the request def process(self): # this is just a stub we'd better override return apache.HTTP_NOT_IMPLEMENTED # convert a response to the right type for passing back to # rpclib.xmlrpclib.dumps def normalize(self, response): if isinstance(response, xmlrpclib.Fault): return response
def call_function(self, method, params): # short-circuit everything if sending a system-wide message. if CFG.SEND_MESSAGE_TO_ALL: # Make sure the applet doesn't see the message if method == 'applet.poll_status': return self.response({ 'checkin_interval': 3600, 'server_status': 'normal' }) if method == 'applet.poll_packages': return self.response({'use_cached_copy': 1}) # Fetch global message being sent to clients if applicable. msg = open(CFG.MESSAGE_TO_ALL).read() log_debug(3, "Sending message to all clients: %s" % msg) # Send the message as a fault. response = xmlrpclib.Fault( -1, _("IMPORTANT MESSAGE FOLLOWS:\n%s") % msg) # and now send everything back ret = self.response(response) log_debug(4, "Leave with return value", ret) return ret # req: where the response is sent to log_debug(2, method) # Now we have the reference, call away force_rollback = 1 try: rhnSQL.clear_log_id() # now get the function reference and call it func = self.method_ref(method) response = func(*params) except (TypeError, ValueError, KeyError, IndexError, UnknownXML): # report exception back to server fault = 1 if sys.version_info[0] == 3: exctype = sys.exc_info()[0] else: exctype = sys.exc_type if exctype == UnknownXML: fault = -1 e_type, e_value = sys.exc_info()[:2] response = xmlrpclib.Fault(fault, _( "While running '%s': caught\n%s : %s\n") % ( method, e_type, e_value)) Traceback(method, self.req, extra="Response sent back to the caller:\n%s\n" % ( response.faultString,), severity="notification") except rhnNotFound: e = sys.exc_info()[1] return apache.HTTP_NOT_FOUND # pkilambi:catch exception if redirect except redirectException: re = sys.exc_info()[1] log_debug(3, "redirect exception caught", re.path) response = re.path except rhnFault: f = sys.exc_info()[1] response = f.getxml() except rhnSQL.SQLSchemaError: e = sys.exc_info()[1] f = None if e.errno == 20200: log_debug(2, "User Group Membership EXCEEDED") f = rhnFault(43, e.errmsg) if not f: log_error("rhnSQL.SQLSchemaError caught", e) rhnSQL.rollback() # generate the traceback report Traceback(method, self.req, extra="SQL Error generated: %s" % e, severity="schema") return apache.HTTP_INTERNAL_SERVER_ERROR response = f.getxml() except rhnSQL.SQLError: e = sys.exc_info()[1] log_error("rhnSQL.SQLError caught", e) rhnSQL.rollback() Traceback(method, self.req, extra="SQL Error generated: %s" % e, severity="schema") return apache.HTTP_INTERNAL_SERVER_ERROR except Exception: e = sys.exc_info()[1] log_error("Unhandled exception", e) rhnSQL.rollback() # otherwise we do a full stop Traceback(method, self.req, severity="unhandled") return apache.HTTP_INTERNAL_SERVER_ERROR else: # if no exception, we don't need to rollback force_rollback = 0 if force_rollback: rhnSQL.rollback() rhnSQL.clear_log_id() # and now send everything back ret = self.response(response) log_debug(4, "Leave with return value", ret) return ret
self.req, extra="SQL Error generated: %s" % e, severity="schema") return apache.HTTP_INTERNAL_SERVER_ERROR except Exception, e: log_error("Unhandled exception", e) rhnSQL.rollback() # otherwise we do a full stop Traceback(method, self.req, severity="unhandled") return apache.HTTP_INTERNAL_SERVER_ERROR else: # if no exception, we don't need to rollback force_rollback = 0 if force_rollback: rhnSQL.rollback() rhnSQL.clear_log_id() # and now send everything back ret = self.response(response) log_debug(4, "Leave with return value", ret) return ret # process the request def process(self): # this is just a stub we'd better override return apache.HTTP_NOT_IMPLEMENTED # convert a response to the right type for passing back to # rpclib.xmlrpclib.dumps def normalize(self, response): if isinstance(response, xmlrpclib.Fault): return response