def spawn(self, supProc=None): """ Spawns this process description with the initialized attributes. @param supProc the process instance that should be set as supervisor """ assert self.procState == 'DEFINED', "Cannot spawn process twice" self.supProcess = supProc if self.procNode == None: logging.info('Spawning name=%s node=%s' % (self.procName, self.procNode)) # Importing service module proc_mod = pu.get_module(self.procModule) self.procModObj = proc_mod # Spawn instance of a process # During spawn, the supervisor process id, system name and proc name # get provided as spawn args, in addition to any give spawn args. spawnargs = {'proc-name':self.procName, 'sup-id':self.supProcess.receiver.spawned.id.full, 'sys-name':self.supProcess.sysName} if self.spawnArgs: spawnargs.update(self.spawnArgs) #logging.debug("spawn(%s, args=%s)" % (self.procModule, spawnargs)) proc_id = yield spawn(proc_mod, None, spawnargs) self.procId = proc_id self.procState = 'SPAWNED' #logging.info("Process "+self.procClass+" ID: "+str(proc_id)) else: logging.error('Cannot spawn '+self.procClass+' on node='+str(self.procNode)) defer.returnValue(self.procId)
def build(self, spawnArgs={}): """Factory method return a new receiver for a new process. At the same time instantiate class. """ logging.info("ProcessProtocolFactory.build() with args="+str(spawnArgs)) svcmodule = spawnArgs.get('svcmodule',None) if not svcmodule: logging.error("No spawn argument svcmodule given. Cannot spawn") return None svcclass = spawnArgs.get('svcclass',None) svc_mod = pu.get_module(svcmodule) if hasattr(svc_mod,'factory'): logging.info("Found module factory. Using factory to get service receiver") return svc_mod.factory.build() elif hasattr(svc_mod,'receiver'): logging.info("Found module receiver") return svc_mod.receiver elif svcclass: logging.info("Service process module instantiate from class:"+svcclass) return self.create_process_instance(svc_mod,'name') else: logging.error("Service process module cannot be spawned")
def _load_package(self, pack, recurse=False): #logging.info('Loading Package %s' % (pack)) try: packo = pu.get_module(pack) ppath = packo.__path__ for path1 in ppath: dirList = os.listdir(path1) for fname in dirList: if fname.endswith('.py') and fname != '__init__.py': self._load_module(pack + '.' + fname[:len(fname) - 3]) elif os.path.isdir(os.path.join(path1, fname)) and recurse: self._load_package(pack + '.' + fname) except Exception, ie: logging.error("Error importing package: " + str(pack))
def _load_package(self, pack, recurse=False): #logging.info('Loading Package %s' % (pack)) try: packo = pu.get_module(pack) ppath = packo.__path__ for path1 in ppath: dirList=os.listdir(path1) for fname in dirList: if fname.endswith('.py') and fname != '__init__.py': self._load_module(pack+'.'+fname[:len(fname)-3]) elif os.path.isdir(os.path.join(path1,fname)) and recurse: self._load_package(pack+'.'+fname) except Exception, ie: logging.error("Error importing package: "+str(pack))
from carrot.backends.base import BaseMessage from ion.core import ioninit import ion.util.procutils as pu # Configuration CONF = ioninit.config(__name__) master_off = CONF.getValue('master_off', False) msg_sign = CONF.getValue('msg_sign', True) encrypt = CONF.getValue('encrypt', False) encrypt_mod = CONF.getValue('encrypt_mod', None) encrypt_key = CONF.getValue('encrypt_key', None) encrypt_pad = CONF.getValue('encrypt_pad', 16) if encrypt: try: mod = pu.get_module(encrypt_mod) encrypter = mod.new(encrypt_key) except ImportError: encrypter = None else: encrypter = None class IdmInterceptor(Interceptor): """Message interceptor for identity management and security purposes. Called last before message hits the wire, and first after message received. """ @classmethod def transform(cls, msg): """Identity management transform """ if master_off: return msg
def _load_module(self, mod): #logging.info('Loading Module %s' % (mod)) try: modo = pu.get_module(mod) except Exception, ie: logging.error("Error importing module: " + str(mod))
from carrot.backends.base import BaseMessage from ion.core import ioninit import ion.util.procutils as pu # Configuration CONF = ioninit.config(__name__) master_off = CONF.getValue('master_off', False) msg_sign = CONF.getValue('msg_sign', True) encrypt = CONF.getValue('encrypt', False) encrypt_mod = CONF.getValue('encrypt_mod', None) encrypt_key = CONF.getValue('encrypt_key', None) encrypt_pad = CONF.getValue('encrypt_pad', 16) if encrypt: try: mod = pu.get_module(encrypt_mod) encrypter = mod.new(encrypt_key) except ImportError: encrypter = None else: encrypter = None class IdmInterceptor(Interceptor): """Message interceptor for identity management and security purposes. Called last before message hits the wire, and first after message received. """ @classmethod def transform(cls, msg): """Identity management transform """
def _load_module(self, mod): #logging.info('Loading Module %s' % (mod)) try: modo = pu.get_module(mod) except Exception, ie: logging.error("Error importing module: "+str(mod))