def parseClusterSection(self, key, value): if not key.startswith('CLUSTER_'): return False if key == 'CLUSTER_HOST': self.clusterHost = value return True if key.endswith('_CLUSTER_UniqueID'): self.clusterId = value return True if key.endswith('_CLUSTER_Name'): self.clusterName = value return True if key.endswith('_SITE_UniqueID'): self.clusterSite = value return True if key.endswith('_CE_HOSTS'): self.clusterCEList += value.strip('\'"').split() return True if key.endswith('_SUBCLUSTERS'): for scId in value.strip('\'"').split(): self.resourceTable[scId] = CommonUtils.CEResource() return True
def parseCEHostSection(self, key, value): if not key.startswith('CE_HOST_'): return False if key.endswith('_CE_AccessControlBaseRule'): idx = key.find('_QUEUE_') if idx < 0: return True queueNorm = key[idx + 7:-25] hostNorm = key[8:idx] voRawList = value.strip('\'"').split() for vogrp in voRawList: self.ruleTable.add(self.ceParamTable[hostNorm], self.qParamTable[queueNorm], CommonUtils.VOData(vogrp)) return True if key.endswith('_CE_InfoJobManager'): self.jobmanager = value return True
def process(siteDefs, out=sys.stdout): now = CommonUtils.getNow() srvType = 'org.glite.ce.CREAM' endpointCount = 2 # CREAM + RTEPublisher (CEMon ?) shareCount = siteDefs.ruleTable.getShareCount() resourceCount = len(siteDefs.resourceTable) out.write("dn: GLUE2ServiceID=%s,GLUE2GroupID=resource,o=glue\n" % siteDefs.compServiceID) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2Service\n") out.write("objectClass: GLUE2ComputingService\n") out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityName: Computing Service %s\n" % siteDefs.compServiceID) out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) out.write("GLUE2ServiceID: %s\n" % siteDefs.compServiceID) out.write("GLUE2ServiceType: %s\n" % srvType) out.write("GLUE2ServiceCapability: executionmanagement.jobexecution\n") out.write("GLUE2ServiceQualityLevel: production\n") out.write("GLUE2ServiceComplexity: endpointType=%d, share=%d, resource=%d\n" % (endpointCount, shareCount, resourceCount)) out.write("GLUE2ServiceAdminDomainForeignKey: %s\n" % siteDefs.siteName) out.write("\n")
def process(siteDefs, out=sys.stdout): now = CommonUtils.getNow() srvType = 'org.glite.ce.CREAM' endpointCount = 2 # CREAM + RTEPublisher (CEMon ?) shareCount = siteDefs.ruleTable.getShareCount() resourceCount = len(siteDefs.resourceTable) out.write("dn: GLUE2ServiceID=%s,GLUE2GroupID=resource,o=glue\n" % siteDefs.compServiceID) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2Service\n") out.write("objectClass: GLUE2ComputingService\n") out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityName: Computing Service %s\n" % siteDefs.compServiceID) out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) out.write("GLUE2ServiceID: %s\n" % siteDefs.compServiceID) out.write("GLUE2ServiceType: %s\n" % srvType) out.write("GLUE2ServiceCapability: executionmanagement.jobexecution\n") out.write("GLUE2ServiceQualityLevel: production\n") out.write( "GLUE2ServiceComplexity: endpointType=%d, share=%d, resource=%d\n" % (endpointCount, shareCount, resourceCount)) out.write("GLUE2ServiceAdminDomainForeignKey: %s\n" % siteDefs.siteName) out.write("\n")
def process(siteDefs, out=sys.stdout): if siteDefs.creamStandAloneMode(siteDefs.ceHost): return now = CommonUtils.getNow() for seData in siteDefs.seAccess.values(): # In GLUE2 access points are mandatory if seData.mount == None or seData.export == None: continue out.write("dn: GLUE2ToStorageServiceID=%s_%s,GLUE2ServiceID=%s,GLUE2GroupID=resource,o=glue\n" % (siteDefs.compServiceID, seData.host, siteDefs.compServiceID)) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2ToStorageService\n") out.write("GLUE2ToStorageServiceID: %s_%s\n" % (siteDefs.compServiceID, seData.host)) out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) out.write("Glue2EntityName: %s_%s\n" % (siteDefs.compServiceID, seData.host)) out.write("GLUE2ToStorageServiceLocalPath: %s\n" % seData.mount) out.write("GLUE2ToStorageServiceRemotePath: %s\n" % seData.export) out.write("GLUE2ToStorageServiceComputingServiceForeignKey: %s\n" % siteDefs.compServiceID) out.write("GLUE2ToStorageServiceStorageServiceForeignKey: %s\n" % seData.host) out.write("\n")
def __init__(self): Thread.__init__(self) self.errList = list() self.mRegex = re.compile('([^:]+):([^,]+),(.+)') self.ceParamTable = dict() self.qParamTable = dict() self.voParamTable = dict() self.scParamTable = dict() self.ceHost = socket.getfqdn() self.cePort = 8443 self.compServiceID = None self.siteName = None self.jobmanager = None self.batchsys = None self.batchsysVer = None self.softDir = 'Undefined' self.ceDataDir = 'unset' self.argusEnabled = True self.clusterHost = None self.clusterId = None self.clusterName = None self.clusterSite = None self.clusterCEList = list() self.capabilities = list() self.ruleTable = CommonUtils.ResourceRuleTable() self.voParams = dict() self.resourceTable = dict() # temporary register the "anonymous" resource self.resourceTable['--'] = CommonUtils.CEResource() self.seAccess = dict() # one item per SE host!! self.seRank = 1 self.wAreaShared = None self.wAreaGuaranteed = None self.wAreaTotal = -1 self.wAreaFree = -1 self.wAreaLifeTime = -1 self.wAreaMultiSlotTotal = -1 self.wAreaMultiSlotFree = -1 self.wAreaMultiSlotLifeTime = -1
def process(siteDefs, out=sys.stdout): if siteDefs.creamStandAloneMode(siteDefs.ceHost): return now = CommonUtils.getNow() out.write( "dn: GLUE2ManagerId=%s_Manager,GLUE2ServiceID=%s,GLUE2GroupID=resource,o=glue\n" % (siteDefs.compServiceID, siteDefs.compServiceID)) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2Manager\n") out.write("objectClass: GLUE2ComputingManager\n") out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityName: Computing Manager on %s\n" % siteDefs.ceHost) out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) for capaItem in siteDefs.capabilities: out.write("GLUE2EntityOtherInfo: %s\n" % capaItem) out.write("GLUE2ManagerID: %s_Manager\n" % siteDefs.compServiceID) out.write("GLUE2ManagerProductName: %s\n" % siteDefs.batchsys) out.write("GLUE2ManagerProductVersion: %s\n" % siteDefs.batchsysVer) out.write("GLUE2ManagerServiceForeignKey: %s\n" % siteDefs.compServiceID) if siteDefs.wAreaShared <> None: out.write("GLUE2ComputingManagerWorkingAreaShared: %s\n" % repr(siteDefs.wAreaShared).upper()) if siteDefs.wAreaGuaranteed <> None: out.write("GLUE2ComputingManagerWorkingAreaGuaranteed: %s\n" % repr(siteDefs.wAreaGuaranteed).upper()) if siteDefs.wAreaTotal <> -1: out.write("GLUE2ComputingManagerWorkingAreaTotal: %d\n" % siteDefs.wAreaTotal) if siteDefs.wAreaFree <> -1: out.write("GLUE2ComputingManagerWorkingAreaFree: %d\n" % siteDefs.wAreaFree) if siteDefs.wAreaLifeTime <> -1: out.write("GLUE2ComputingManagerWorkingAreaLifeTime: %d\n" % siteDefs.wAreaLifeTime) if siteDefs.wAreaMultiSlotTotal <> -1: out.write("GLUE2ComputingManagerWorkingAreaMultiSlotTotal: %d\n" % siteDefs.wAreaMultiSlotTotal) if siteDefs.wAreaMultiSlotFree <> -1: out.write("GLUE2ComputingManagerWorkingAreaMultiSlotFree: %d\n" % siteDefs.wAreaMultiSlotFree) if siteDefs.wAreaMultiSlotLifeTime <> -1: out.write("GLUE2ComputingManagerWorkingAreaMultiSlotLifeTime: %d\n" % siteDefs.wAreaMultiSlotLifeTime) out.write("GLUE2ComputingManagerComputingServiceForeignKey: %s\n" % siteDefs.compServiceID) out.write("\n")
def parseVOSection(self, key, value): if not key.startswith('VO_'): return False if key == 'VO_SW_DIR': self.softDir = value return True if key.endswith('_SW_DIR'): voName = self.voParamTable[key[3:-7]] if not voName in self.voParams: self.voParams[voName] = CommonUtils.VOParams() self.voParams[voName].softDir = value elif key.endswith('_DEFAULT_SE'): voName = self.voParamTable[key[3:-11]] if not voName in self.voParams: self.voParams[voName] = CommonUtils.VOParams() self.voParams[voName].defaultSE = value return True
def process(siteDefs, out=sys.stdout): if siteDefs.creamStandAloneMode(siteDefs.ceHost): return now = CommonUtils.getNow() out.write("dn: GLUE2ManagerId=%s_Manager,GLUE2ServiceID=%s,GLUE2GroupID=resource,o=glue\n" % (siteDefs.compServiceID, siteDefs.compServiceID)) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2Manager\n") out.write("objectClass: GLUE2ComputingManager\n") out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityName: Computing Manager on %s\n" % siteDefs.ceHost) out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) for capaItem in siteDefs.capabilities: out.write("GLUE2EntityOtherInfo: %s\n" % capaItem) out.write("GLUE2ManagerID: %s_Manager\n" % siteDefs.compServiceID) out.write("GLUE2ManagerProductName: %s\n" % siteDefs.batchsys) out.write("GLUE2ManagerProductVersion: %s\n" % siteDefs.batchsysVer) out.write("GLUE2ManagerServiceForeignKey: %s\n" % siteDefs.compServiceID) if siteDefs.wAreaShared <> None: out.write("GLUE2ComputingManagerWorkingAreaShared: %s\n" % repr(siteDefs.wAreaShared).upper()) if siteDefs.wAreaGuaranteed <> None: out.write("GLUE2ComputingManagerWorkingAreaGuaranteed: %s\n" % repr(siteDefs.wAreaGuaranteed).upper()) if siteDefs.wAreaTotal <> -1: out.write("GLUE2ComputingManagerWorkingAreaTotal: %d\n" % siteDefs.wAreaTotal) if siteDefs.wAreaFree <> -1: out.write("GLUE2ComputingManagerWorkingAreaFree: %d\n" % siteDefs.wAreaFree) if siteDefs.wAreaLifeTime <> -1: out.write("GLUE2ComputingManagerWorkingAreaLifeTime: %d\n" % siteDefs.wAreaLifeTime) if siteDefs.wAreaMultiSlotTotal <> -1: out.write("GLUE2ComputingManagerWorkingAreaMultiSlotTotal: %d\n" % siteDefs.wAreaMultiSlotTotal) if siteDefs.wAreaMultiSlotFree <> -1: out.write("GLUE2ComputingManagerWorkingAreaMultiSlotFree: %d\n" % siteDefs.wAreaMultiSlotFree) if siteDefs.wAreaMultiSlotLifeTime <> -1: out.write("GLUE2ComputingManagerWorkingAreaMultiSlotLifeTime: %d\n" % siteDefs.wAreaMultiSlotLifeTime) out.write("GLUE2ComputingManagerComputingServiceForeignKey: %s\n" % siteDefs.compServiceID) out.write("\n")
def parseSEAccess(self, key, value): if key <> 'SE_MOUNT_INFO_LIST': return False if value.lower() == 'none': return True for mItem in value.strip('\'"').split(): parsed = self.mRegex.match(mItem) if parsed: seItem = parsed.group(1) if not seItem in self.seAccess: self.seAccess[seItem] = CommonUtils.SEData(seItem) self.seAccess[seItem].rank = self.seRank self.seRank += 1 self.seAccess[seItem].export = parsed.group(2) self.seAccess[seItem].mount = parsed.group(3) return True
def process(siteDefs, out=sys.stdout): if siteDefs.creamStandAloneMode(siteDefs.ceHost): return now = CommonUtils.getNow() for queue in siteDefs.ruleTable.getQueueList(): ceList, voList = siteDefs.ruleTable.getHostAndVOList(queue) # # For the moment we consider just one host per share # ceId = '%s:%d/cream-%s-%s' % (siteDefs.ceHost, siteDefs.cePort, siteDefs.jobmanager, queue) for voItem in voList: shareId = "%s_%s_%s" % (queue, voItem.getNormName(), siteDefs.compServiceID) shareDN = 'GLUE2ShareID=%s,GLUE2ServiceID=%s,GLUE2GroupID=resource,o=glue' \ % (shareId, siteDefs.compServiceID) out.write("dn: %s\n" % shareDN) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2Share\n") out.write("objectClass: GLUE2ComputingShare\n") out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityOtherInfo: CREAMCEId=%s\n" % ceId) out.write("GLUE2EntityOtherInfo: ServiceType=org.glite.ce.CREAM\n") out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) out.write("GLUE2ShareID: %s\n" % shareId) out.write("GLUE2ShareDescription: Share of %s for %s\n" % (queue, voItem.getVOName())) out.write("GLUE2ComputingShareMappingQueue: %s\n" % queue) # Default value for Serving state is production # Real value supposed to be provided by the dynamic plugin out.write("GLUE2ComputingShareServingState: unknown\n") out.write("GLUE2ComputingShareDefaultCPUTime: %d\n" % MAX_POLICY_NUMBER) out.write("GLUE2ComputingShareMaxCPUTime: %d\n" % MAX_POLICY_NUMBER) out.write("GLUE2ComputingShareDefaultWallTime: %d\n" % MAX_POLICY_NUMBER) out.write("GLUE2ComputingShareMaxWallTime: %d\n" % MAX_POLICY_NUMBER) out.write("GLUE2ComputingShareMaxRunningJobs: %d\n" % MAX_POLICY_NUMBER) out.write("GLUE2ComputingShareMaxTotalJobs: %d\n" % MAX_POLICY_NUMBER) out.write("GLUE2ComputingShareMaxWaitingJobs: %d\n" % MAX_POLICY_NUMBER) out.write("GLUE2ComputingShareMaxSlotsPerJob: %d\n" % MAX_JOB_NUMBER) out.write("GLUE2ComputingShareRunningJobs: 0\n") out.write("GLUE2ComputingShareTotalJobs: 0\n") out.write("GLUE2ComputingShareFreeSlots: 0\n") out.write("GLUE2ComputingShareUsedSlots: 0\n") out.write("GLUE2ComputingShareWaitingJobs: %d\n" % MAX_JOB_NUMBER) out.write("GLUE2ComputingShareEstimatedAverageWaitingTime: %d\n" % MAX_RESPONSE_TIME) out.write("GLUE2ComputingShareEstimatedWorstWaitingTime: %d\n" % MAX_RESPONSE_TIME) out.write("GLUE2ComputingShareMaxMainMemory: %d\n" % MAX_JOB_NUMBER) out.write("GLUE2ComputingShareMaxVirtualMemory: %d\n" % MAX_JOB_NUMBER) out.write("GLUE2ComputingShareGuaranteedMainMemory: 0\n") out.write("GLUE2ComputingShareGuaranteedVirtualMemory: 0\n") for resItem in siteDefs.resourceTable.values(): out.write("GLUE2ShareResourceForeignKey: %s\n" % resItem.id) out.write( "GLUE2ComputingShareExecutionEnvironmentForeignKey: %s\n" % resItem.id) for ceHostItem in ceList: out.write( "GLUE2ShareEndpointForeignKey: %s_org.glite.ce.CREAM\n" % ceHostItem) out.write( "GLUE2ComputingShareComputingEndpointForeignKey: %s_org.glite.ce.CREAM\n" % ceHostItem) out.write("GLUE2ShareServiceForeignKey: %s\n" % siteDefs.compServiceID) out.write("GLUE2ComputingShareComputingServiceForeignKey: %s\n" % siteDefs.compServiceID) out.write("\n") out.write("dn: GLUE2PolicyID=%s_policy,%s\n" % (shareId, shareDN)) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2Policy\n") out.write("objectClass: GLUE2MappingPolicy\n") out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) out.write("GLUE2PolicyID: %s_policy\n" % shareId) out.write("GLUE2PolicyScheme: org.glite.standard\n") out.write("GLUE2PolicyRule: %s\n" % repr(voItem)) out.write("GLUE2PolicyUserDomainForeignKey: %s\n" % voItem.getVOName()) out.write("GLUE2MappingPolicyShareForeignKey: %s\n" % shareId) out.write("\n")
def process(siteDefs, out=sys.stdout): if siteDefs.clusterStandAloneMode(): # # Endpoint is not available on cluster node alone # return now = CommonUtils.getNow() endPointID = siteDefs.ceHost + '_org.glite.ce.CREAM' endPointDN = 'GLUE2EndpointID=%s,GLUE2ServiceID=%s,GLUE2GroupID=resource,o=glue' \ % (endPointID, siteDefs.compServiceID) implVer, ifaceVer = ServiceInfoUtils.getCREAMServiceInfo() hostDN, hostIssuer = ServiceInfoUtils.getHostCertInfo() # # TODO Validity is hard-coded for now (1hour in seconds) # validity = 3600 statusCode, statusInfo = ServiceInfoUtils.getTomcatStatus() srvState, srvStarttime = ServiceInfoUtils.getCREAMServingState() out.write("dn: %s\n" % endPointDN) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2Endpoint\n") out.write("objectClass: GLUE2ComputingEndpoint\n") out.write("GLUE2EntityName: %s\n" % endPointID) out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityValidity: %d\n" % validity) out.write("GLUE2EntityOtherInfo: HostDN=%s\n" % hostDN) out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) out.write("GLUE2EntityOtherInfo: ArgusEnabled=%s\n" % repr(siteDefs.argusEnabled).upper()) out.write("Glue2EndpointStartTime: %s\n" % now) out.write("GLUE2EndpointID: %s\n" % endPointID) out.write("GLUE2EndpointURL: https://%s:%d/ce-cream/services\n" % (siteDefs.ceHost, siteDefs.cePort)) out.write("GLUE2EndpointCapability: executionmanagement.jobexecution\n") out.write("GLUE2EndpointTechnology: webservice\n") out.write("GLUE2EndpointInterfaceName: org.glite.ce.CREAM\n") out.write("GLUE2EndpointInterfaceVersion: %s\n" % ifaceVer) out.write("GLUE2EndpointWSDL: https://%s:%d/ce-cream/services/CREAM2?wsdl\n" % (siteDefs.ceHost, siteDefs.cePort)) out.write("GLUE2EndpointSupportedProfile: http://www.ws-i.org/Profiles/BasicProfile-1.0.html\n") out.write("GLUE2EndpointSemantics:http://wiki.italiangrid.org/twiki/bin/view/CREAM/UserGuide\n") out.write("GLUE2EndpointImplementor: gLite\n") out.write("GLUE2EndpointImplementationName: CREAM\n") out.write("GLUE2EndpointImplementationVersion: %s\n" % implVer) out.write("GLUE2EndpointQualityLevel: production\n") out.write("GLUE2EndpointHealthState: %s\n" % statusCode) out.write("GLUE2EndpointHealthStateInfo: %s\n" % statusInfo) out.write("GLUE2EndpointServingState: %s\n" % srvState) out.write("GLUE2EndpointStartTime: %s\n" % srvStarttime) out.write("GLUE2EndpointIssuerCA: %s\n" % hostIssuer) for tCA in ServiceInfoUtils.getTrustAnchors(): out.write("GLUE2EndpointTrustedCA: %s\n" % tCA) out.write("GLUE2EndpointDownTimeInfo: See the GOC DB for downtimes: https://goc.egi.eu/\n") out.write("GLUE2EndpointServiceForeignKey: %s\n" % siteDefs.compServiceID) out.write("GLUE2ComputingEndpointStaging: staginginout\n") out.write("GLUE2ComputingEndpointJobDescription: glite:jdl\n") out.write("GLUE2ComputingEndpointComputingServiceForeignKey: %s\n" % siteDefs.compServiceID) out.write("\n") out.write("dn: GLUE2PolicyID=%s_Policy,%s\n" % (endPointID, endPointDN)) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2Policy\n") out.write("objectClass: GLUE2AccessPolicy\n") out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityName: Access control rules for Endpoint %s\n" % endPointID) out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) out.write("GLUE2PolicyID: %s_Policy\n" % endPointID) # The policy scheme needs a name: arbitrarily define this as org.glite.standard out.write("GLUE2PolicyScheme: org.glite.standard\n") voList = siteDefs.ruleTable.getVOList() for voItem in voList: out.write('GLUE2PolicyUserDomainForeignKey: %s\n' % voItem.getVOName()) for voItem in voList: out.write('GLUE2PolicyRule: %s\n' % repr(voItem)) out.write("GLUE2AccessPolicyEndpointForeignKey: %s\n" % endPointID) out.write("\n")
def process(siteDefs, out=sys.stdout): if siteDefs.creamStandAloneMode(siteDefs.ceHost): return now = CommonUtils.getNow() for queue in siteDefs.ruleTable.getQueueList(): ceList, voList = siteDefs.ruleTable.getHostAndVOList(queue) # # For the moment we consider just one host per share # ceId = '%s:%d/cream-%s-%s' % (siteDefs.ceHost, siteDefs.cePort, siteDefs.jobmanager, queue) for voItem in voList: shareId = "%s_%s_%s" % (queue, voItem.getNormName(), siteDefs.compServiceID) shareDN = 'GLUE2ShareID=%s,GLUE2ServiceID=%s,GLUE2GroupID=resource,o=glue' \ % (shareId, siteDefs.compServiceID) out.write("dn: %s\n" % shareDN) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2Share\n") out.write("objectClass: GLUE2ComputingShare\n") out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityOtherInfo: CREAMCEId=%s\n" % ceId) out.write("GLUE2EntityOtherInfo: ServiceType=org.glite.ce.CREAM\n") out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) out.write("GLUE2ShareID: %s\n" % shareId) out.write("GLUE2ShareDescription: Share of %s for %s\n" % (queue, voItem.getVOName())) out.write("GLUE2ComputingShareMappingQueue: %s\n" % queue) # Default value for Serving state is production # Real value supposed to be provided by the dynamic plugin out.write("GLUE2ComputingShareServingState: unknown\n") out.write("GLUE2ComputingShareDefaultCPUTime: %d\n" % MAX_POLICY_NUMBER) out.write("GLUE2ComputingShareMaxCPUTime: %d\n" % MAX_POLICY_NUMBER) out.write("GLUE2ComputingShareDefaultWallTime: %d\n" % MAX_POLICY_NUMBER) out.write("GLUE2ComputingShareMaxWallTime: %d\n" % MAX_POLICY_NUMBER) out.write("GLUE2ComputingShareMaxRunningJobs: %d\n" % MAX_POLICY_NUMBER) out.write("GLUE2ComputingShareMaxTotalJobs: %d\n" % MAX_POLICY_NUMBER) out.write("GLUE2ComputingShareMaxWaitingJobs: %d\n" % MAX_POLICY_NUMBER) out.write("GLUE2ComputingShareMaxSlotsPerJob: %d\n" % MAX_JOB_NUMBER) out.write("GLUE2ComputingShareRunningJobs: 0\n") out.write("GLUE2ComputingShareTotalJobs: 0\n") out.write("GLUE2ComputingShareFreeSlots: 0\n") out.write("GLUE2ComputingShareUsedSlots: 0\n") out.write("GLUE2ComputingShareWaitingJobs: %d\n" % MAX_JOB_NUMBER) out.write("GLUE2ComputingShareEstimatedAverageWaitingTime: %d\n" % MAX_RESPONSE_TIME) out.write("GLUE2ComputingShareEstimatedWorstWaitingTime: %d\n" % MAX_RESPONSE_TIME) out.write("GLUE2ComputingShareMaxMainMemory: %d\n" % MAX_JOB_NUMBER) out.write("GLUE2ComputingShareMaxVirtualMemory: %d\n" % MAX_JOB_NUMBER) out.write("GLUE2ComputingShareGuaranteedMainMemory: 0\n") out.write("GLUE2ComputingShareGuaranteedVirtualMemory: 0\n") for resItem in siteDefs.resourceTable.values(): out.write("GLUE2ShareResourceForeignKey: %s\n" % resItem.id) out.write("GLUE2ComputingShareExecutionEnvironmentForeignKey: %s\n" % resItem.id) for ceHostItem in ceList: out.write("GLUE2ShareEndpointForeignKey: %s_org.glite.ce.CREAM\n" % ceHostItem) out.write("GLUE2ComputingShareComputingEndpointForeignKey: %s_org.glite.ce.CREAM\n" % ceHostItem) out.write("GLUE2ShareServiceForeignKey: %s\n" % siteDefs.compServiceID) out.write("GLUE2ComputingShareComputingServiceForeignKey: %s\n" % siteDefs.compServiceID) out.write("\n") out.write("dn: GLUE2PolicyID=%s_policy,%s\n" % (shareId, shareDN)) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2Policy\n") out.write("objectClass: GLUE2MappingPolicy\n") out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) out.write("GLUE2PolicyID: %s_policy\n" % shareId) out.write("GLUE2PolicyScheme: org.glite.standard\n") out.write("GLUE2PolicyRule: %s\n" % repr(voItem)) out.write("GLUE2PolicyUserDomainForeignKey: %s\n" % voItem.getVOName()) out.write("GLUE2MappingPolicyShareForeignKey: %s\n" % shareId) out.write("\n")
def process(siteDefs, out=sys.stdout): if siteDefs.creamStandAloneMode(siteDefs.ceHost): return now = CommonUtils.getNow() osType = 'linux' # Hardwire the data validity period to 1 hour for now validity = 3600 for resItem in siteDefs.resourceTable.values(): # # TODO verify following values # cores, benchName, benchValue = parseProcDescr(resItem.procDescr) if resItem.smpSize > 0: totalInstances = resItem.logCPU/resItem.smpSize else: totalInstances = resItem.logCPU if resItem.logCPU == resItem.phyCPU: cpuType = 'single' else: cpuType = 'multi' if resItem.phyCPU <> 0 and resItem.smpSize == (resItem.logCPU/resItem.phyCPU): coreType = 'single' else: coreType = 'multi' resDN = 'GLUE2ResourceID=%s,GLUE2ServiceID=%s,GLUE2GroupID=resource,o=glue' \ % (resItem.id, siteDefs.compServiceID) out.write("dn: %s\n" % resDN) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2Resource\n") out.write("objectClass: GLUE2ExecutionEnvironment\n") out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityName: %s\n" % resItem.id) out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) out.write("GLUE2EntityOtherInfo: SmpSize=%d\n" % resItem.smpSize) out.write("GLUE2EntityOtherInfo: Cores=%s\n" % cores) out.write("GLUE2ResourceID: %s\n" % resItem.id) out.write("GLUE2ResourceManagerForeignKey: %s_Manager\n" % siteDefs.compServiceID) out.write("GLUE2ExecutionEnvironmentPlatform: %s\n" % resItem.osArch) out.write("GLUE2ExecutionEnvironmentTotalInstances: %d\n" % totalInstances) out.write("GLUE2ExecutionEnvironmentPhysicalCPUs: %d\n" % resItem.phyCPU) out.write("GLUE2ExecutionEnvironmentLogicalCPUs: %d\n" % resItem.logCPU) out.write("GLUE2ExecutionEnvironmentCPUMultiplicity: %scpu-%score\n" % (cpuType, coreType)) out.write("GLUE2ExecutionEnvironmentCPUVendor: %s\n" % resItem.procVendor) out.write("GLUE2ExecutionEnvironmentCPUModel: %s\n" % resItem.procModel) out.write("GLUE2ExecutionEnvironmentCPUClockSpeed: %s\n" % resItem.procSpeed) out.write("GLUE2ExecutionEnvironmentMainMemorySize: %d\n" % resItem.mainMemSize) out.write("GLUE2ExecutionEnvironmentVirtualMemorySize: %d\n" % resItem.mainVirtSize) out.write("GLUE2ExecutionEnvironmentOSFamily: %s\n" % osType) out.write("GLUE2ExecutionEnvironmentOSName: %s\n" % resItem.osName) out.write("GLUE2ExecutionEnvironmentOSVersion: %s\n" % resItem.osRelease) out.write("GLUE2ExecutionEnvironmentConnectivityIn: %s\n" % repr(resItem.inBound).upper()) out.write("GLUE2ExecutionEnvironmentConnectivityOut: %s\n" % repr(resItem.outBound).upper()) out.write("GLUE2ExecutionEnvironmentComputingManagerForeignKey: %s_Manager\n" % siteDefs.compServiceID) out.write("GLUE2ExecutionEnvironmentCPUTimeScalingFactor: 1\n") out.write("\n") benchList = list() benchList.append(('specfp2000', resItem.benchSF00)) benchList.append(('specint2000', resItem.benchSI00)) if benchName: benchList.append((benchName, benchValue)) for benchName, benchValue in benchList: out.write("dn: GLUE2BenchmarkID=%s_%s,%s\n" % (resItem.id, benchName, resDN)) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2Benchmark\n") out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) out.write("Glue2EntityName: Benchmark %s\n" % benchName) out.write("GLUE2BenchmarkID: %s_%s\n" % (resItem.id, benchName)) out.write("GLUE2BenchmarkType: %s\n" % benchName) out.write("GLUE2BenchmarkValue: %s\n" % benchValue) out.write("GLUE2BenchmarkExecutionEnvironmentForeignKey: %s\n" %resItem.id) out.write("GLUE2BenchmarkComputingManagerForeignKey: %s_Manager\n" % siteDefs.compServiceID) out.write("\n") for appItem in resItem.runtimeEnv: out.write("dn: GLUE2ApplicationEnvironmentId=%s_%s,%s\n" % (appItem, resItem.id, resDN)) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2ApplicationEnvironment\n") out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityValidity: %d\n" % validity) out.write("GLUE2ApplicationEnvironmentID: %s_%s\n" % (appItem, resItem.id)) out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) out.write("GLUE2ApplicationEnvironmentAppName: %s\n" % appItem) out.write("GLUE2ApplicationEnvironmentComputingManagerForeignKey: %s_Manager\n" % siteDefs.compServiceID) out.write("\n")
def run(self): line = self.stream.readline() while line: try: parsed = CommonUtils.pRegex.match(line) if not parsed: continue key = parsed.group(1) value = parsed.group(2).strip() if key.startswith('PARAM_CE_'): self.ceParamTable[key[9:]] = value continue if key.startswith('PARAM_QUEUE_'): self.qParamTable[key[12:]] = value continue if key.startswith('PARAM_VO_'): self.voParamTable[key[9:]] = value continue if key.startswith('PARAM_SC_'): self.scParamTable[key[9:]] = value continue if key == 'CE_HOST': self.ceHost = value continue if key == 'COMPUTING_SERVICE_ID': self.compServiceID = value continue if key == 'SITE_NAME': self.siteName = value continue if key == 'JOB_MANAGER': self.jobmanager = value continue if key == 'CE_BATCH_SYS': self.batchsys = value continue if key == 'BATCH_VERSION': self.batchsysVer = value continue if self.parseCEHostSection(key, value): continue if key == 'CE_DATADIR': self.ceDataDir = value continue if key == 'CE_CAPABILITY': self.capabilities += value.strip('\'"').split() continue if self.parseOldSubClusterVars(key, value): continue if self.parseVOSection(key, value): continue if key == 'CLUSTERS' and len(value.split()) > 1: self.errList.append("Multiple clusters not supported") continue if self.parseClusterSection(key, value): continue if self.parseSubClusterSection(key, value): continue if key == 'SE_LIST': for seItem in value.strip('\'"').split(): self.seAccess[seItem] = CommonUtils.SEData(seItem) self.seAccess[seItem].rank = self.seRank self.seRank += 1 continue if self.parseSEAccess(key, value): continue if self.parseWorkingArea(key, value): continue if key == 'USE_ARGUS': self.argusEnabled = value.lower() == 'yes' if key == 'CREAM_CLUSTER_MODE' and value.lower() == 'no': self.clusterHost = None finally: line = self.stream.readline() #post processing if not self.clusterId: self.clusterId = self.ceHost if not self.clusterName: self.clusterName = self.ceHost if not self.clusterSite: self.clusterSite = self.siteName if len(self.resourceTable) > 1: #remove anonymous resource del (self.resourceTable['--']) else: self.resourceTable['--'].id = self.ceHost self.resourceTable['--'].name = self.ceHost self.resourceTable['--'].tmpDir = '/tmp' self.resourceTable['--'].WNDir = '/tmp' # # TODO merge resource tags from files (replace lcg-info-dynamic-software) # if not self.compServiceID: self.compServiceID = self.ceHost + '_ComputingElement' if not self.batchsys: self.batchsys = self.jobmanager
def parse(config): if not 'siteinfo-defs' in config: raise Exception('Missing site-info definition files') siteInfoList = config['siteinfo-defs'].split(':') if 'vo-defs-dir' in config: voInfoFileList = os.listdir(config['vo-defs-dir']) else: voInfoFileList = list() container = SiteInfoHandler() outFile = None tempExec = None try: tmpfd, tempExec = tempfile.mkstemp(".sh", "print-siteinfo-defs", '/tmp') inFile = None try: outFile = os.fdopen(tmpfd, 'w+b') for fileItem in siteInfoList: inFile = open(fileItem) for line in inFile: outFile.write(line) inFile.close() for fileItem in voInfoFileList: inFile = open(os.path.join(config['vo-defs-dir'], fileItem)) for line in inFile: tmps = line.strip() if len(tmps) > 0 and not tmps.startswith('#'): normName = fileItem.replace('.', '_').replace('-', '_').upper() outFile.write('VO_%s_%s' % (normName, line)) inFile.close() outFile.write(''' ################################################################################ # Normalization table # for host names, vo names and queues # see https://twiki.cern.ch/twiki/bin/view/LCG/Site-info_configuration_variables ################################################################################ for CLUSTER_RAW in ${CLUSTERS}; do CLUSTER=`echo ${CLUSTER_RAW} | sed -e 's/-/_/g' -e 's/\./_/g' | tr '[:lower:]' '[:upper:]'` done if [ ! "x${CE_HOST}" == "x" ] ; then CE_name=`echo ${CE_HOST} | sed -e 's/-/_/g' -e 's/\./_/g' | tr '[:upper:]' '[:lower:]'` echo "PARAM_CE_${CE_name}=${CE_HOST}" fi for CE_RAW in `eval echo "\\\$CLUSTER_${CLUSTER}_CE_HOSTS"`; do CE_name=`echo ${CE_RAW} | sed -e 's/-/_/g' -e 's/\./_/g' | tr '[:upper:]' '[:lower:]'` echo "PARAM_CE_${CE_name}=${CE_RAW}" for QUEUE_RAW in `eval echo "\\\$CE_HOST_${CE_name}_QUEUES"`; do QUEUE_name=`echo ${QUEUE_RAW} | sed -e 's/[\.-]/_/g' | tr '[:lower:]' '[:upper:]'` echo "PARAM_QUEUE_${QUEUE_name}=${QUEUE_RAW}" done done for SCLUSTER_RAW in `eval echo "\\\$CLUSTER_${CLUSTER}_SUBCLUSTERS"`; do SCLUSTER_name=`echo ${SCLUSTER_RAW} | sed -e 's/-/_/g' -e 's/\./_/g' | tr '[:lower:]' '[:upper:]'` echo "PARAM_SC_${SCLUSTER_name}=${SCLUSTER_RAW}" done for VO_RAW in `eval echo "\\\$VOS"`; do VO_name=`echo ${VO_RAW} | sed -e 's/-/_/g' -e 's/\./_/g' | tr '[:lower:]' '[:upper:]'` echo "PARAM_VO_${VO_name}=${VO_RAW}" done set ''') finally: if inFile: inFile.close() if outFile: outFile.close() os.chmod(tempExec, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR) CommonUtils.parseStream(tempExec, container) finally: os.remove(tempExec) return container
def parse(config): if not 'siteinfo-defs' in config: raise Exception('Missing site-info definition files') siteInfoList = config['siteinfo-defs'].split(':') if 'vo-defs-dir' in config: voInfoFileList = os.listdir(config['vo-defs-dir']) else: voInfoFileList = list() container = SiteInfoHandler() outFile = None tempExec = None try: tmpfd, tempExec = tempfile.mkstemp(".sh", "print-siteinfo-defs", '/tmp') inFile = None try: outFile = os.fdopen(tmpfd,'w+b') for fileItem in siteInfoList: inFile = open(fileItem) for line in inFile: outFile.write(line) inFile.close() for fileItem in voInfoFileList: inFile = open(os.path.join(config['vo-defs-dir'], fileItem)) for line in inFile: tmps = line.strip() if len(tmps) > 0 and not tmps.startswith('#'): normName = fileItem.replace('.', '_').replace('-', '_').upper() outFile.write('VO_%s_%s' % (normName, line)) inFile.close() outFile.write(''' ################################################################################ # Normalization table # for host names, vo names and queues # see https://twiki.cern.ch/twiki/bin/view/LCG/Site-info_configuration_variables ################################################################################ for CLUSTER_RAW in ${CLUSTERS}; do CLUSTER=`echo ${CLUSTER_RAW} | sed -e 's/-/_/g' -e 's/\./_/g' | tr '[:lower:]' '[:upper:]'` done if [ ! "x${CE_HOST}" == "x" ] ; then CE_name=`echo ${CE_HOST} | sed -e 's/-/_/g' -e 's/\./_/g' | tr '[:upper:]' '[:lower:]'` echo "PARAM_CE_${CE_name}=${CE_HOST}" fi for CE_RAW in `eval echo "\\\$CLUSTER_${CLUSTER}_CE_HOSTS"`; do CE_name=`echo ${CE_RAW} | sed -e 's/-/_/g' -e 's/\./_/g' | tr '[:upper:]' '[:lower:]'` echo "PARAM_CE_${CE_name}=${CE_RAW}" for QUEUE_RAW in `eval echo "\\\$CE_HOST_${CE_name}_QUEUES"`; do QUEUE_name=`echo ${QUEUE_RAW} | sed -e 's/[\.-]/_/g' | tr '[:lower:]' '[:upper:]'` echo "PARAM_QUEUE_${QUEUE_name}=${QUEUE_RAW}" done done for SCLUSTER_RAW in `eval echo "\\\$CLUSTER_${CLUSTER}_SUBCLUSTERS"`; do SCLUSTER_name=`echo ${SCLUSTER_RAW} | sed -e 's/-/_/g' -e 's/\./_/g' | tr '[:lower:]' '[:upper:]'` echo "PARAM_SC_${SCLUSTER_name}=${SCLUSTER_RAW}" done for VO_RAW in `eval echo "\\\$VOS"`; do VO_name=`echo ${VO_RAW} | sed -e 's/-/_/g' -e 's/\./_/g' | tr '[:lower:]' '[:upper:]'` echo "PARAM_VO_${VO_name}=${VO_RAW}" done set ''') finally: if inFile: inFile.close() if outFile: outFile.close() os.chmod(tempExec, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR) CommonUtils.parseStream(tempExec, container) finally: os.remove(tempExec) return container
def process(siteDefs, out=sys.stdout): if siteDefs.clusterStandAloneMode(): # # Endpoint is not available on cluster node alone # return now = CommonUtils.getNow() endPointID = siteDefs.ceHost + '_org.glite.ce.CREAM' endPointDN = 'GLUE2EndpointID=%s,GLUE2ServiceID=%s,GLUE2GroupID=resource,o=glue' \ % (endPointID, siteDefs.compServiceID) implVer, ifaceVer = ServiceInfoUtils.getCREAMServiceInfo() hostDN, hostIssuer = ServiceInfoUtils.getHostCertInfo() # # TODO Validity is hard-coded for now (1hour in seconds) # validity = 3600 statusCode, statusInfo = ServiceInfoUtils.getTomcatStatus() srvState, srvStarttime = ServiceInfoUtils.getCREAMServingState() out.write("dn: %s\n" % endPointDN) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2Endpoint\n") out.write("objectClass: GLUE2ComputingEndpoint\n") out.write("GLUE2EntityName: %s\n" % endPointID) out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityValidity: %d\n" % validity) out.write("GLUE2EntityOtherInfo: HostDN=%s\n" % hostDN) out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) out.write("GLUE2EntityOtherInfo: ArgusEnabled=%s\n" % repr(siteDefs.argusEnabled).upper()) out.write("Glue2EndpointStartTime: %s\n" % now) out.write("GLUE2EndpointID: %s\n" % endPointID) out.write("GLUE2EndpointURL: https://%s:%d/ce-cream/services\n" % (siteDefs.ceHost, siteDefs.cePort)) out.write("GLUE2EndpointCapability: executionmanagement.jobexecution\n") out.write("GLUE2EndpointTechnology: webservice\n") out.write("GLUE2EndpointInterfaceName: org.glite.ce.CREAM\n") out.write("GLUE2EndpointInterfaceVersion: %s\n" % ifaceVer) out.write( "GLUE2EndpointWSDL: https://%s:%d/ce-cream/services/CREAM2?wsdl\n" % (siteDefs.ceHost, siteDefs.cePort)) out.write( "GLUE2EndpointSupportedProfile: http://www.ws-i.org/Profiles/BasicProfile-1.0.html\n" ) out.write( "GLUE2EndpointSemantics:http://wiki.italiangrid.org/twiki/bin/view/CREAM/UserGuide\n" ) out.write("GLUE2EndpointImplementor: gLite\n") out.write("GLUE2EndpointImplementationName: CREAM\n") out.write("GLUE2EndpointImplementationVersion: %s\n" % implVer) out.write("GLUE2EndpointQualityLevel: production\n") out.write("GLUE2EndpointHealthState: %s\n" % statusCode) out.write("GLUE2EndpointHealthStateInfo: %s\n" % statusInfo) out.write("GLUE2EndpointServingState: %s\n" % srvState) out.write("GLUE2EndpointStartTime: %s\n" % srvStarttime) out.write("GLUE2EndpointIssuerCA: %s\n" % hostIssuer) for tCA in ServiceInfoUtils.getTrustAnchors(): out.write("GLUE2EndpointTrustedCA: %s\n" % tCA) out.write( "GLUE2EndpointDownTimeInfo: See the GOC DB for downtimes: https://goc.egi.eu/\n" ) out.write("GLUE2EndpointServiceForeignKey: %s\n" % siteDefs.compServiceID) out.write("GLUE2ComputingEndpointStaging: staginginout\n") out.write("GLUE2ComputingEndpointJobDescription: glite:jdl\n") out.write("GLUE2ComputingEndpointComputingServiceForeignKey: %s\n" % siteDefs.compServiceID) out.write("\n") out.write("dn: GLUE2PolicyID=%s_Policy,%s\n" % (endPointID, endPointDN)) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2Policy\n") out.write("objectClass: GLUE2AccessPolicy\n") out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityName: Access control rules for Endpoint %s\n" % endPointID) out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) out.write("GLUE2PolicyID: %s_Policy\n" % endPointID) # The policy scheme needs a name: arbitrarily define this as org.glite.standard out.write("GLUE2PolicyScheme: org.glite.standard\n") voList = siteDefs.ruleTable.getVOList() for voItem in voList: out.write('GLUE2PolicyUserDomainForeignKey: %s\n' % voItem.getVOName()) for voItem in voList: out.write('GLUE2PolicyRule: %s\n' % repr(voItem)) out.write("GLUE2AccessPolicyEndpointForeignKey: %s\n" % endPointID) out.write("\n")
def process(siteDefs, out=sys.stdout): if siteDefs.creamStandAloneMode(siteDefs.ceHost): return now = CommonUtils.getNow() osType = 'linux' # Hardwire the data validity period to 1 hour for now validity = 3600 for resItem in siteDefs.resourceTable.values(): # # TODO verify following values # cores, benchName, benchValue = parseProcDescr(resItem.procDescr) if resItem.smpSize > 0: totalInstances = resItem.logCPU / resItem.smpSize else: totalInstances = resItem.logCPU if resItem.logCPU == resItem.phyCPU: cpuType = 'single' else: cpuType = 'multi' if resItem.phyCPU <> 0 and resItem.smpSize == (resItem.logCPU / resItem.phyCPU): coreType = 'single' else: coreType = 'multi' resDN = 'GLUE2ResourceID=%s,GLUE2ServiceID=%s,GLUE2GroupID=resource,o=glue' \ % (resItem.id, siteDefs.compServiceID) out.write("dn: %s\n" % resDN) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2Resource\n") out.write("objectClass: GLUE2ExecutionEnvironment\n") out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityName: %s\n" % resItem.id) out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) out.write("GLUE2EntityOtherInfo: SmpSize=%d\n" % resItem.smpSize) out.write("GLUE2EntityOtherInfo: Cores=%s\n" % cores) out.write("GLUE2ResourceID: %s\n" % resItem.id) out.write("GLUE2ResourceManagerForeignKey: %s_Manager\n" % siteDefs.compServiceID) out.write("GLUE2ExecutionEnvironmentPlatform: %s\n" % resItem.osArch) out.write("GLUE2ExecutionEnvironmentTotalInstances: %d\n" % totalInstances) out.write("GLUE2ExecutionEnvironmentPhysicalCPUs: %d\n" % resItem.phyCPU) out.write("GLUE2ExecutionEnvironmentLogicalCPUs: %d\n" % resItem.logCPU) out.write("GLUE2ExecutionEnvironmentCPUMultiplicity: %scpu-%score\n" % (cpuType, coreType)) out.write("GLUE2ExecutionEnvironmentCPUVendor: %s\n" % resItem.procVendor) out.write("GLUE2ExecutionEnvironmentCPUModel: %s\n" % resItem.procModel) out.write("GLUE2ExecutionEnvironmentCPUClockSpeed: %s\n" % resItem.procSpeed) out.write("GLUE2ExecutionEnvironmentMainMemorySize: %d\n" % resItem.mainMemSize) out.write("GLUE2ExecutionEnvironmentVirtualMemorySize: %d\n" % resItem.mainVirtSize) out.write("GLUE2ExecutionEnvironmentOSFamily: %s\n" % osType) out.write("GLUE2ExecutionEnvironmentOSName: %s\n" % resItem.osName) out.write("GLUE2ExecutionEnvironmentOSVersion: %s\n" % resItem.osRelease) out.write("GLUE2ExecutionEnvironmentConnectivityIn: %s\n" % repr(resItem.inBound).upper()) out.write("GLUE2ExecutionEnvironmentConnectivityOut: %s\n" % repr(resItem.outBound).upper()) out.write( "GLUE2ExecutionEnvironmentComputingManagerForeignKey: %s_Manager\n" % siteDefs.compServiceID) out.write("GLUE2ExecutionEnvironmentCPUTimeScalingFactor: 1\n") out.write("\n") benchList = list() benchList.append(('specfp2000', resItem.benchSF00)) benchList.append(('specint2000', resItem.benchSI00)) if benchName: benchList.append((benchName, benchValue)) for benchName, benchValue in benchList: out.write("dn: GLUE2BenchmarkID=%s_%s,%s\n" % (resItem.id, benchName, resDN)) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2Benchmark\n") out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) out.write("Glue2EntityName: Benchmark %s\n" % benchName) out.write("GLUE2BenchmarkID: %s_%s\n" % (resItem.id, benchName)) out.write("GLUE2BenchmarkType: %s\n" % benchName) out.write("GLUE2BenchmarkValue: %s\n" % benchValue) out.write("GLUE2BenchmarkExecutionEnvironmentForeignKey: %s\n" % resItem.id) out.write( "GLUE2BenchmarkComputingManagerForeignKey: %s_Manager\n" % siteDefs.compServiceID) out.write("\n") for appItem in resItem.runtimeEnv: out.write("dn: GLUE2ApplicationEnvironmentId=%s_%s,%s\n" % (appItem, resItem.id, resDN)) out.write("objectClass: GLUE2Entity\n") out.write("objectClass: GLUE2ApplicationEnvironment\n") out.write("GLUE2EntityCreationTime: %s\n" % now) out.write("GLUE2EntityValidity: %d\n" % validity) out.write("GLUE2ApplicationEnvironmentID: %s_%s\n" % (appItem, resItem.id)) out.write("GLUE2EntityOtherInfo: InfoProviderName=%s\n" % CommonUtils.providerName) out.write("GLUE2EntityOtherInfo: InfoProviderVersion=%s\n" % CommonUtils.providerVersion) out.write("GLUE2EntityOtherInfo: InfoProviderHost=%s\n" % siteDefs.ceHost) out.write("GLUE2ApplicationEnvironmentAppName: %s\n" % appItem) out.write( "GLUE2ApplicationEnvironmentComputingManagerForeignKey: %s_Manager\n" % siteDefs.compServiceID) out.write("\n")