def _registerFunctions(self): def wrapIrsMethod(f): def wrapper(*args, **kwargs): fmt = "" logargs = [] if self.cif.threadLocal.client: fmt += "client [%s]" logargs.append(self.cif.threadLocal.client) if getattr(self.cif.threadLocal, 'flowID', None) is not None: fmt += " flowID [%s]" logargs.append(self.cif.threadLocal.flowID) self.log.debug(fmt, *logargs) try: return f(*args, **kwargs) except: self.log.error("Unexpected exception", exc_info=True) return errCode['unexpected'] wrapper.__name__ = f.__name__ wrapper.__doc__ = f.__doc__ return wrapper globalMethods = self.getGlobalMethods() irsMethods = self.getIrsMethods() if not self.cif.irs: err = errCode['recovery'].copy() err['status'] = err['status'].copy() err['status']['message'] = 'Failed to initialize storage' self.server._dispatch = lambda method, params: err self.server.register_introspection_functions() for (method, name) in globalMethods: self.server.register_function(wrapApiMethod(method), name) for (method, name) in irsMethods: self.server.register_function(wrapIrsMethod(method), name) if _glusterEnabled and self.cif.gluster: for (method, name) in getGlusterMethods(self.cif.gluster): self.server.register_function(wrapApiMethod(method), name)