コード例 #1
0
ファイル: language_plg.py プロジェクト: jschpmn/EigenD
 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())
コード例 #2
0
ファイル: agentd.py プロジェクト: jschpmn/EigenD
    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)
コード例 #3
0
    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))
コード例 #4
0
 def __create_inst(self,subject,arg):
     address = guid.address('rig')
     self.__instances.assert_state(address)
     return action.created_return(address)