[Gug-cvs] gug/gug/service/stm stm.py, 1.53, 1.54 stm.conf.default, 1.5, 1.6
Status: Planning
Brought to you by:
szferi
From: Adrian T. <cs...@us...> - 2007-09-27 10:36:04
|
Update of /cvsroot/gug/gug/gug/service/stm In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv23476/gug/service/stm Modified Files: stm.py stm.conf.default Log Message: Adding Decision Maker module It is Integrated into the following services: Sched, CM, StM Index: stm.conf.default =================================================================== RCS file: /cvsroot/gug/gug/gug/service/stm/stm.conf.default,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** stm.conf.default 30 Jan 2007 18:24:29 -0000 1.5 --- stm.conf.default 27 Sep 2007 10:36:05 -0000 1.6 *************** *** 2,5 **** --- 2,9 ---- <ServiceConfig> <RefreshInterval>10</RefreshInterval> + <DecisionMaker> + <ResourceInterface>gug.module.dm.resource.storage.StorageManager</ResourceInterface> + <Algorithm>gug.module.dm.algorithm.simple.RandomOrder</Algorithm> + </DecisionMaker> <PlugIn> <Class>gug.service.stm.plugins.file.File</Class> Index: stm.py =================================================================== RCS file: /cvsroot/gug/gug/gug/service/stm/stm.py,v retrieving revision 1.53 retrieving revision 1.54 diff -C2 -d -r1.53 -r1.54 *** stm.py 27 Jul 2007 14:15:45 -0000 1.53 --- stm.py 27 Sep 2007 10:36:05 -0000 1.54 *************** *** 18,21 **** --- 18,23 ---- from gug.host.timed import Task from gug.client.soap import get_client, get_working_client + from gug.module.dm.dm import DecisionMaker + from gug.common.idstore import AbstractQueue class StorageManager: *************** *** 46,49 **** --- 48,54 ---- Task(self.id, self._refresh).start(period, now = True, \ now_interval = 3) + #Initializing Decision Maker + dm_cfg = config.get_dictionaries('/ServiceConfig/DecisionMaker')[0] + self.dm = DecisionMaker(self.gis, dm_cfg) plugins = config.get_multi_dictionaries('/ServiceConfig/PlugIn') self.pluginof = {} *************** *** 71,94 **** except: log.error() ! try: ! stcs = self.gis.get({'type' : 'StorageController'}) ! self.stcs = [(meta['urls'], data) \ ! for (meta, data) in stcs] ! print '_refresh STC:', [urls for (urls, _) in self.stcs] ! except: ! log.error() def _stc(self, min_space = 0): ! try: ! stcs = [] ! for urls, data in self.stcs: ! xml = SimpleXML(memory=data) ! if int(xml.get_content('//DataStorageFree',[0])[0]) > min_space: ! stcs.extend(urls) ! return get_working_client(stcs) ! except: ! log.error() ! raise NoServiceKnown, 'No StC with enough space known' ! def _fss(self): try: --- 76,98 ---- except: log.error() ! self.dm.query_resources() ! print '_refresh STC:', self.dm.resource_list.keys() def _stc(self, min_space = 0): ! queue = AbstractQueue() ! queue.add(min_space) ! map = self.dm.make_decisions(queue) ! while len(map) > 0: ! try: ! for id in map.keys(): ! res = map[id].next() ! return get_working_client(self.dm.resource_list[res][0]['urls']) ! except StopIteration: ! del map[id] ! except Exception, e: ! print 'Error to connect stc (%s):' % res, e ! self.dm.put_blacklist(res) ! raise NoServiceKnown, 'No StC with enough space known' ! def _fss(self): try: |