本文整理汇总了Python中DIRAC.Core.Utilities.ClassAd.ClassAdLight.ClassAd.set_expression方法的典型用法代码示例。如果您正苦于以下问题:Python ClassAd.set_expression方法的具体用法?Python ClassAd.set_expression怎么用?Python ClassAd.set_expression使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DIRAC.Core.Utilities.ClassAd.ClassAdLight.ClassAd
的用法示例。
在下文中一共展示了ClassAd.set_expression方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __sendJobToTaskQueue
# 需要导入模块: from DIRAC.Core.Utilities.ClassAd.ClassAdLight import ClassAd [as 别名]
# 或者: from DIRAC.Core.Utilities.ClassAd.ClassAdLight.ClassAd import set_expression [as 别名]
def __sendJobToTaskQueue( self, job, classAdJob, siteCandidates, bannedSites ):
"""This method sends jobs to the task queue agent and if candidate sites
are defined, updates job JDL accordingly.
"""
reqJDL = classAdJob.get_expression( 'JobRequirements' )
classAddReq = ClassAd( reqJDL )
if siteCandidates:
classAddReq.insertAttributeVectorString( 'Sites', siteCandidates )
if bannedSites:
classAddReq.insertAttributeVectorString( 'BannedSites', bannedSites )
if classAdJob.lookupAttribute( "SubmitPools" ):
classAddReq.set_expression( 'SubmitPools', classAdJob.get_expression( 'SubmitPools' ) )
if classAdJob.lookupAttribute( "GridMiddleware" ):
classAddReq.set_expression( 'GridMiddleware', classAdJob.get_expression( 'GridMiddleware' ) )
if classAdJob.lookupAttribute( "PilotTypes" ):
classAddReq.set_expression( 'PilotTypes', classAdJob.get_expression( 'PilotTypes' ) )
#HAck to migrate old jobs to new ones.
#DELETE ON 08/09
else:
if classAdJob.lookupAttribute( "PilotType" ):
classAddReq.set_expression( 'PilotTypes', classAdJob.get_expression( 'PilotType' ) )
if classAdJob.lookupAttribute( "JobType" ):
jobTypes = [ jt for jt in classAdJob.getListFromExpression( 'JobType' ) if jt ]
classAddReq.insertAttributeVectorString( 'JobTypes', jobTypes )
#Required CE's requirements
gridCEs = [ ce for ce in classAdJob.getListFromExpression( 'GridRequiredCEs' ) if ce ]
if gridCEs:
classAddReq.insertAttributeVectorString( 'GridCEs', gridCEs )
if siteCandidates:
sites = ','.join( siteCandidates )
classAdJob.insertAttributeString( "Site", sites )
reqJDL = classAddReq.asJDL()
classAdJob.insertAttributeInt( 'JobRequirements', reqJDL )
jdl = classAdJob.asJDL()
result = self.jobDB.setJobJDL( job, jdl )
if not result['OK']:
return result
if siteCandidates:
if len( siteCandidates ) == 1:
self.log.verbose( 'Individual site candidate for job %s is %s' % ( job, siteCandidates[0] ) )
self.jobDB.setJobAttribute( job, 'Site', siteCandidates[0] )
elif bannedSites:
remainingSites = []
for site in siteCandidates:
if not site in bannedSites:
remainingSites.append( site )
if remainingSites:
if len( remainingSites ) == 1:
self.log.verbose( 'Individual site candidate for job %s is %s' % ( job, remainingSites[0] ) )
self.jobDB.setJobAttribute( job, 'Site', remainingSites[0] )
else:
self.log.verbose( 'Site candidates for job %s are %s' % ( job, str( remainingSites ) ) )
result = self.jobDB.getJobAttribute(job,'Site')
siteGroup = "Multiple"
if result['OK']:
if result['Value'].startswith('Group'):
siteGroup = result['Value']
self.jobDB.setJobAttribute( job, 'Site', siteGroup )
else:
self.log.verbose( 'Site candidates for job %s are %s' % ( job, str( siteCandidates ) ) )
result = self.jobDB.getJobAttribute(job,'Site')
siteGroup = "Multiple"
if result['OK']:
if result['Value'].startswith('Group'):
siteGroup = result['Value']
self.jobDB.setJobAttribute( job, 'Site', siteGroup )
else:
self.log.verbose( 'All sites are eligible for job %s' % job )
self.jobDB.setJobAttribute( job, 'Site', 'ANY' )
return self.setNextOptimizer( job )