本文整理汇总了Python中DIRAC.ResourceStatusSystem.Client.ResourceStatusClient.ResourceStatusClient.getCachedIDs方法的典型用法代码示例。如果您正苦于以下问题:Python ResourceStatusClient.getCachedIDs方法的具体用法?Python ResourceStatusClient.getCachedIDs怎么用?Python ResourceStatusClient.getCachedIDs使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DIRAC.ResourceStatusSystem.Client.ResourceStatusClient.ResourceStatusClient
的用法示例。
在下文中一共展示了ResourceStatusClient.getCachedIDs方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: DTInfo_Cached_Command
# 需要导入模块: from DIRAC.ResourceStatusSystem.Client.ResourceStatusClient import ResourceStatusClient [as 别名]
# 或者: from DIRAC.ResourceStatusSystem.Client.ResourceStatusClient.ResourceStatusClient import getCachedIDs [as 别名]
class DTInfo_Cached_Command(Command):
def doCommand(self):
"""
Returns DT info that are cached.
:attr:`args`:
- args[0]: string: should be a ValidRes
- args[1]: string should be the name of the ValidRes
- args[2]: string: optional, number of hours in which
the down time is starting
"""
super(DTInfo_Cached_Command, self).doCommand()
granularity = self.args[0]
name = self.args[1]
if self.client is None:
from DIRAC.ResourceStatusSystem.Client.ResourceStatusClient import ResourceStatusClient
self.client = ResourceStatusClient(timeout = self.timeout)
now = datetime.datetime.utcnow().replace(microsecond = 0, second = 0)
try:
if granularity in ('Site', 'Sites'):
commandName = 'DTEverySites'
elif self.args[0] in ('Resource', 'Resources'):
commandName = 'DTEveryResources'
res = self.client.getCachedIDs(name, commandName)
if len(res) == 0:
return {'Result':{'DT':None}}
if len(res) > 1:
#there's more than one DT
dt_ID_startingSoon = res[0]
startSTR_startingSoon = self.client.getCachedResult(name, commandName,
'StartDate', dt_ID_startingSoon)[0]
start_datetime_startingSoon = datetime.datetime( *time.strptime(startSTR_startingSoon,
"%Y-%m-%d %H:%M")[0:5] )
endSTR_startingSoon = self.client.getCachedResult(name, commandName,
'EndDate', dt_ID_startingSoon)[0]
end_datetime_startingSoon = datetime.datetime( *time.strptime(endSTR_startingSoon,
"%Y-%m-%d %H:%M")[0:5] )
if start_datetime_startingSoon < now:
if end_datetime_startingSoon > now:
#ongoing downtime found!
DT_ID = dt_ID_startingSoon
try:
DT_ID
except:
for dt_ID in res[1:]:
#looking for an ongoing one
startSTR = self.client.getCachedResult(name, commandName, 'StartDate', dt_ID)[0]
start_datetime = datetime.datetime( *time.strptime(startSTR, "%Y-%m-%d %H:%M")[0:5] )
endSTR = self.client.getCachedResult(name, commandName, 'EndDate', dt_ID)[0]
end_datetime = datetime.datetime( *time.strptime(endSTR, "%Y-%m-%d %H:%M")[0:5] )
if start_datetime < now:
if end_datetime > now:
#ongoing downtime found!
DT_ID = dt_ID
break
if start_datetime < start_datetime_startingSoon:
#the DT starts before the former considered one
dt_ID_startingSoon = dt_ID
try:
DT_ID
except:
#if I'm here, there's no OnGoing DT
DT_ID = dt_ID_startingSoon
else:
DT_ID = res[0]
DT_dict_result = {}
endSTR = self.client.getCachedResult(name, commandName, 'EndDate', DT_ID)[0]
end_datetime = datetime.datetime( *time.strptime(endSTR, "%Y-%m-%d %H:%M")[0:5] )
if end_datetime < now:
return {'Result': {'DT':None}}
DT_dict_result['EndDate'] = endSTR
DT_dict_result['DT'] = self.client.getCachedResult(name, commandName, 'Severity', DT_ID)[0]
DT_dict_result['StartDate'] = self.client.getCachedResult(name, commandName, 'StartDate', DT_ID)[0]
DT_dict_result['Description'] = self.client.getCachedResult(name, commandName, 'Description', DT_ID)[0]
DT_dict_result['Link'] = self.client.getCachedResult(name, commandName, 'Link', DT_ID)[0]
startSTR = self.client.getCachedResult(name, commandName, 'StartDate', DT_ID)[0]
start_datetime = datetime.datetime( *time.strptime(startSTR, "%Y-%m-%d %H:%M")[0:5] )
if start_datetime > now:
try:
self.args[2]
diff = convertTime(start_datetime - now, 'hours')
if diff > self.args[2]:
#.........这里部分代码省略.........