本文整理汇总了Python中DIRAC.ResourceStatusSystem.Client.ResourceManagementClient.ResourceManagementClient.addOrModifyAccountingCache方法的典型用法代码示例。如果您正苦于以下问题:Python ResourceManagementClient.addOrModifyAccountingCache方法的具体用法?Python ResourceManagementClient.addOrModifyAccountingCache怎么用?Python ResourceManagementClient.addOrModifyAccountingCache使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DIRAC.ResourceStatusSystem.Client.ResourceManagementClient.ResourceManagementClient
的用法示例。
在下文中一共展示了ResourceManagementClient.addOrModifyAccountingCache方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: CacheFeederAgent
# 需要导入模块: from DIRAC.ResourceStatusSystem.Client.ResourceManagementClient import ResourceManagementClient [as 别名]
# 或者: from DIRAC.ResourceStatusSystem.Client.ResourceManagementClient.ResourceManagementClient import addOrModifyAccountingCache [as 别名]
#.........这里部分代码省略.........
try:
self.clientsInvoker.setCommand( co[1] )
res = self.clientsInvoker.doCommand()['Result']
if not res['OK']:
self.log.warn( res['Message'] )
continue
res = res[ 'Value' ]
if not res or res is None:
self.log.info(' returned empty...')
continue
self.log.debug( res )
for key in res.keys():
clientCache = ()
if 'ID' in res[key].keys():
for value in res[key].keys():
if value != 'ID':
clientCache = ( key.split()[1], commandName, res[key]['ID'],
value, res[key][value], None, None )
resQuery = self.rmClient.addOrModifyClientCache( *clientCache )
if not resQuery[ 'OK' ]:
self.log.error( resQuery[ 'Message' ] )
else:
for value in res[key].keys():
clientCache = ( key, commandName, None, value,
res[key][value], None, None )
resQuery = self.rmClient.addOrModifyClientCache( *clientCache )
if not resQuery[ 'OK' ]:
self.log.error( resQuery[ 'Message' ] )
except:
self.log.exception( "Exception when executing " + co[0][1] )
continue
now = datetime.utcnow().replace( microsecond = 0 )
for co in self.commandObjectsListAccountingCache:
if co[0][3] == 'Hourly':
if now.minute >= 10:
continue
elif co[0][3] == 'Daily':
if now.hour >= 1:
continue
commandName = co[0][1].split( '_' )[0]
plotName = commandName + '_' + str( co[2][0] )
self.log.info( 'Executed %s with args %s %s' % ( commandName, co[0][2], co[0][3] ) )
try:
co[1].setArgs( co[2] )
self.clientsInvoker.setCommand( co[1] )
res = self.clientsInvoker.doCommand()['Result']
if not res['OK']:
self.log.warn( res['Message'] )
continue
res = res[ 'Value' ]
if not res or res is None:
self.log.info(' returned empty...')
continue
self.log.debug( res )
plotType = res.keys()[ 0 ]
if not res[ plotType ]:
self.log.info(' returned empty...')
self.log.debug( res )
for name in res[ plotType ].keys():
#name, plotType, plotName, result, dateEffective, lastCheckTime
accountingClient = ( name, plotType, plotName, str(res[plotType][name]), None, None )
resQuery = self.rmClient.addOrModifyAccountingCache( *accountingClient )
if not resQuery[ 'OK' ]:
self.log.error( resQuery[ 'Message' ] )
except:
self.log.exception( "Exception when executing " + commandName )
continue
return S_OK()
except Exception:
errorStr = "CacheFeederAgent execution"
self.log.exception( errorStr )
return S_ERROR( errorStr )
################################################################################
#EOF#EOF#EOF#EOF#EOF#EOF#EOF#EOF#EOF#EOF#EOF#EOF#EOF#EOF#EOF#EOF#EOF#EOF#EOF#EOF