def __ctlcreate(self, subj, dummy): index = 0 for ss in self.iter_subsystem(): if ss != 'plumber': index = max(index, int(ss)) index = index + 1 s = self.__state[2].assert_state(str(index)) return action.created_return(s.id())
def __create(self,subject,plugin): plugin = action.abstract_string(plugin) plugin = '_'.join(plugin.split()) factory = self.registry.get_module(plugin) if not factory: return async.failure('no such agent') name = guid.address(plugin) self.dynamic.create(factory,name) return action.created_return(name)
def __create_tmpl(self,subject,name,arg): name = action.abstract_string(name) agentd = self.__agentd.get_data().as_string() if arg is not None: agentd = action.concrete_object(arg) if not paths.valid_id(agentd): yield async.Coroutine.failure('no agent manager specified and no default') print 'loading',name,'onto',agentd file = resource.find_resource(resource.instrument_dir,name) if not file or not os.path.exists(file): yield async.Coroutine.failure('no rig %s' % name) db = state.open_database(file,False) agnts = [] map = state.create_mapping(True) ret = [] # sscount=0 ssid='' ssaddress='' for s,n,a in self.__agentlist(db.get_trunk()): x = a.get_address() if self.__issubsystem(s): #xa=getssid(sscount,ssid) #sscount=sscount+1 xa=self.__getssid(x,ssid) ssaddress='/'+(str(x).split('/')[1]) elif self.__isrig(s): xa = guid.address('rig') self.__instances.assert_state(xa) ssid=xa ssaddress='' # sscount=0 else: c = self.__create_agent(s,agentd) yield c if not c.status(): yield async.Coroutine.failure(*c.args()) xa = c.args()[0] ssid=xa ssaddress='' # sscount=0 map.add('|rig-%s%s-rig|'%(x,ssaddress),xa) print 'map','|rig-%s%s-rig|'%(x,ssaddress),xa if x == '0': ret.append(action.created_return(xa)) elif not self.__issubsystem(s): ret.append(action.initialise_return(xa)) print x,'->',s,xa agnts.append((xa,n)) start = time.time() agg = async.Aggregate(progress=lambda agg,a,b: self.__status(start,agg,a,b)) for i,(a,n) in enumerate(agnts): c = Controller(a) r = c.doload(n,map) agg.add(c,r) print 'loading' agg.enable() self.__bucket.append(agg) yield agg print 'loaded',agg self.__bucket.remove(agg) yield async.Coroutine.success(tuple(ret))
def __create_inst(self,subject,arg): address = guid.address('rig') self.__instances.assert_state(address) return action.created_return(address)