本文整理汇总了Python中DIRAC.ResourceStatusSystem.Client.ResourceManagementClient.ResourceManagementClient.addOrModifyJobCache方法的典型用法代码示例。如果您正苦于以下问题:Python ResourceManagementClient.addOrModifyJobCache方法的具体用法?Python ResourceManagementClient.addOrModifyJobCache怎么用?Python ResourceManagementClient.addOrModifyJobCache使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DIRAC.ResourceStatusSystem.Client.ResourceManagementClient.ResourceManagementClient
的用法示例。
在下文中一共展示了ResourceManagementClient.addOrModifyJobCache方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: JobCommand
# 需要导入模块: from DIRAC.ResourceStatusSystem.Client.ResourceManagementClient import ResourceManagementClient [as 别名]
# 或者: from DIRAC.ResourceStatusSystem.Client.ResourceManagementClient.ResourceManagementClient import addOrModifyJobCache [as 别名]
class JobCommand( Command ):
"""
Job "master" Command.
"""
def __init__( self, args = None, clients = None ):
super( JobCommand, self ).__init__( args, clients )
if 'WMSAdministrator' in self.apis:
self.wmsAdmin = self.apis[ 'WMSAdministrator' ]
else:
self.wmsAdmin = RPCClient( 'WorkloadManagement/WMSAdministrator' )
if 'ResourceManagementClient' in self.apis:
self.rmClient = self.apis[ 'ResourceManagementClient' ]
else:
self.rmClient = ResourceManagementClient()
def _storeCommand( self, result ):
"""
Stores the results of doNew method on the database.
"""
for jobDict in result:
resQuery = self.rmClient.addOrModifyJobCache( jobDict[ 'Site' ],
jobDict[ 'MaskStatus' ],
jobDict[ 'Efficiency' ],
jobDict[ 'Status' ])
if not resQuery[ 'OK' ]:
return resQuery
return S_OK()
def _prepareCommand( self ):
"""
JobCommand requires one arguments:
- name : <str>
"""
if 'name' not in self.args:
return S_ERROR( '"name" not found in self.args' )
name = self.args[ 'name' ]
return S_OK( name )
def doNew( self, masterParams = None ):
"""
Gets the parameters to run, either from the master method or from its
own arguments.
It contacts the WMSAdministrator with a list of site names, or a single
site.
If there are jobs, are recorded and then returned.
"""
if masterParams is not None:
name = masterParams
else:
params = self._prepareCommand()
if not params[ 'OK' ]:
return params
name = params[ 'Value' ]
# selectDict, sortList, startItem, maxItems
# Returns statistics of Last day !
results = self.wmsAdmin.getSiteSummaryWeb( { 'Site' : name }, [], 0, 0 )
if not results[ 'OK' ]:
return results
results = results[ 'Value' ]
if not 'ParameterNames' in results:
return S_ERROR( 'Wrong result dictionary, missing "ParameterNames"' )
params = results[ 'ParameterNames' ]
if not 'Records' in results:
return S_ERROR( 'Wrong formed result dictionary, missing "Records"' )
records = results[ 'Records' ]
uniformResult = []
for record in records:
# This returns a dictionary with the following keys
# 'Site', 'GridType', 'Country', 'Tier', 'MaskStatus', 'Received',
# 'Checking', 'Staging', 'Waiting', 'Matched', 'Running', 'Stalled',
# 'Done', 'Completed', 'Failed', 'Efficiency', 'Status'
jobDict = dict( zip( params , record ))
# We cast efficiency to a float
jobDict[ 'Efficiency' ] = float( jobDict[ 'Efficiency' ] )
uniformResult.append( jobDict )
storeRes = self._storeCommand( uniformResult )
if not storeRes[ 'OK' ]:
return storeRes
return S_OK( uniformResult )
#.........这里部分代码省略.........
示例2: JobCommand
# 需要导入模块: from DIRAC.ResourceStatusSystem.Client.ResourceManagementClient import ResourceManagementClient [as 别名]
# 或者: from DIRAC.ResourceStatusSystem.Client.ResourceManagementClient.ResourceManagementClient import addOrModifyJobCache [as 别名]
class JobCommand( Command ):
'''
Job "master" Command.
'''
def __init__( self, args = None, clients = None ):
super( JobCommand, self ).__init__( args, clients )
if 'JobDB' in self.apis:
self.jobDB = self.apis[ 'JobDB' ]
else:
self.jobDB = JobDB()
if 'ResourceManagementClient' in self.apis:
self.rmClient = self.apis[ 'ResourceManagementClient' ]
else:
self.rmClient = ResourceManagementClient()
def _storeCommand( self, result ):
'''
Stores the results of doNew method on the database.
'''
for jobDict in result:
lowerCaseJobDict = {}
for key, value in jobDict.iteritems():
lowerCaseJobDict[ key[0].lower() + key[1:] ] = value
resQuery = self.rmClient.addOrModifyJobCache( **lowerCaseJobDict )
if not resQuery[ 'OK' ]:
return resQuery
return S_OK()
def _prepareCommand( self ):
'''
JobCommand requires one arguments:
- name : <str>
'''
if not 'name' in self.args:
return S_ERROR( '"name" not found in self.args' )
name = self.args[ 'name' ]
if not 'timespan' in self.args:
return S_ERROR( '"timespan" not found in self.args' )
timespan = self.args[ 'timespan' ]
return S_OK( ( name, timespan ) )
def doNew( self, masterParams = None ):
'''
Gets the parameters to run, either from the master method or from its
own arguments.
It contacts the WMSAdministrator with a list of site names, or a single
site.
If there are jobs, are recorded and then returned.
'''
if masterParams is True:
self.args[ 'name' ] = ''
params = self._prepareCommand()
if not params[ 'OK' ]:
return params
name, timespan = params[ 'Value' ]
condDict = {}
if name:
condDict = { 'Site' : name }
startTimeWindow = datetime.utcnow() - timedelta( seconds = timespan )
results = self.jobDB.getCounters( 'Jobs', ['Site', 'Status'],
condDict, newer = startTimeWindow,
timeStamp = 'LastUpdateTime' )
if not results[ 'OK' ]:
return results
# Results look like this
# [ ({'Status': 'Checking', 'Site': 'ANY'}, 6L), ...
uniformResult = {}
jobStatuses = ( 'Checking', 'Completed', 'Done', 'Failed', 'Killed', 'Matched',
'Received', 'Rescheduled', 'Running', 'Staging', 'Stalled',
'Waiting' )
for resultTuple in results[ 'Value' ]:
selectionDict, numberOfJobs = resultTuple
#.........这里部分代码省略.........