def __init__(self, container): self.container = container # Define the callables that can be added to Container public API self.container_api = [self.spawn_process, self.terminate_process] # Add the public callables to Container for call in self.container_api: setattr(self.container, call.__name__, call) self.proc_id_pool = IDPool() # Temporary registry of running processes self.procs_by_name = {} self.procs = {} # mapping of greenlets we spawn to process_instances for error handling self._spawned_proc_to_process = {} # The pyon worker process supervisor self.proc_sup = IonProcessThreadManager( heartbeat_secs=CFG.cc.timeout.heartbeat, failure_notify_callback=self._spawned_proc_failed) # list of callbacks for process state changes self._proc_state_change_callbacks = []