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:
|