Ejemplo n.º 1
0
 def validate_boost_version(self, t, timetype, tagBoostVersion):
     cursor = self.db.cursor()
     cursor.execute(
         'SELECT GT.NAME, GT.RELEASE, GT.SNAPSHOT_TIME FROM GLOBAL_TAG GT, GLOBAL_TAG_MAP GTM WHERE GT.NAME = GTM.GLOBAL_TAG_NAME AND GTM.TAG_NAME = :TAG_NAME',
         (t, ))
     rows = cursor.fetchall()
     invalid_gts = []
     ngt = 0
     gts = []
     for r in rows:
         gts.append((r[0], r[1], r[2]))
     if len(gts) > 0:
         logging.info('validating %s gts.' % len(gts))
     boost_snapshot_map = {}
     for gt in gts:
         ngt += 1
         logging.debug('Validating for GT %s (release %s)' % (gt[0], gt[1]))
         gtCMSSWVersion = sm.check_cmssw_version(gt[1])
         gtBoostVersion = self.version_db.lookup_boost_in_cmssw(
             gtCMSSWVersion)
         if sm.cmp_boost_version(gtBoostVersion, tagBoostVersion) < 0:
             logging.warning(
                 'The boost version computed from all the iovs in the tag (%s) is incompatible with the gt [%s] %s (consuming ver: %s, snapshot: %s)'
                 %
                 (tagBoostVersion, ngt, gt[0], gtBoostVersion, str(gt[2])))
             if str(gt[2]) not in boost_snapshot_map.keys():
                 tagSnapshotBoostVersion = None
                 minIov = None
                 tagSnapshotBoostVersion, minIov = self.process_tag_boost_version(
                     t, timetype, tagSnapshotBoostVersion, minIov, gt[2])
                 if tagSnapshotBoostVersion is not None:
                     boost_snapshot_map[str(
                         gt[2])] = tagSnapshotBoostVersion
                 else:
                     continue
             else:
                 tagSnapshotBoostVersion = boost_snapshot_map[str(gt[2])]
             if sm.cmp_boost_version(gtBoostVersion,
                                     tagSnapshotBoostVersion) < 0:
                 logging.error(
                     'The snapshot from tag used by gt %s (consuming ver: %s) has an incompatible combined boost version %s'
                     % (gt[0], gtBoostVersion, tagSnapshotBoostVersion))
                 invalid_gts.append((gt[0], gtBoostVersion))
     if len(invalid_gts) == 0:
         if ngt > 0:
             logging.info(
                 'boost version for the tag validated in %s referencing Gts'
                 % (ngt))
         else:
             logging.info('No GT referencing this tag found.')
     else:
         logging.error('boost version for the tag is invalid.')
     return invalid_gts
Ejemplo n.º 2
0
    def lookup_boost_in_cmssw(self, cmssw_version):
        cmssw_v = sm.check_cmssw_version(cmssw_version)
        the_arch = None
        releaseRoot = None
        if sm.is_release_cycle(cmssw_v):
            cmssw_v = sm.strip_cmssw_version(cmssw_v)
            archs = sm.get_production_arch(cmssw_v)
            for arch in archs:
                path = sm.get_release_root(cmssw_v, arch)
                if os.path.exists(os.path.join(path, cmssw_v)):
                    releaseRoot = path
                    the_arch = arch
                    break
            if releaseRoot is None:
                for arch in archs:
                    the_arch = arch
                    releaseRoot = sm.get_release_root(cmssw_v, arch)
                    for r in sorted(os.listdir(releaseRoot)):
                        if r.startswith(cmssw_v):
                            cmssw_v = r
        logging.debug('Boost version will be verified in release %s' % cmssw_v)

        if cmssw_v in self.cmssw_boost_map.keys():
            return self.cmssw_boost_map[cmssw_v]

        if releaseRoot is None:
            archs = sm.get_production_arch(cmssw_v)
            for arch in archs:
                path = sm.get_release_root(cmssw_v, arch)
                if os.path.exists(os.path.join(path, cmssw_v)):
                    releaseRoot = path
                    the_arch = arch
                    break
        logging.debug('Release path: %s' % releaseRoot)
        boost_version = sm.get_cmssw_boost(the_arch,
                                           '%s/%s' % (releaseRoot, cmssw_v))
        if not boost_version is None:
            self.cmssw_boost_map[cmssw_v] = boost_version
            self.insert_cmssw_boost(cmssw_v, boost_version)
        return boost_version
Ejemplo n.º 3
0
 def validate_boost_version( self, t, timetype, tagBoostVersion ):
     cursor = self.db.cursor()
     cursor.execute('SELECT GT.NAME, GT.RELEASE, GT.SNAPSHOT_TIME FROM GLOBAL_TAG GT, GLOBAL_TAG_MAP GTM WHERE GT.NAME = GTM.GLOBAL_TAG_NAME AND GTM.TAG_NAME = :TAG_NAME',(t,))
     rows = cursor.fetchall()
     invalid_gts = []
     ngt = 0
     gts = []
     for r in rows:
         gts.append((r[0],r[1],r[2]))
     if len(gts)>0:
         logging.info('validating %s gts.' %len(gts))
     boost_snapshot_map = {}
     for gt in gts:
         ngt += 1
         logging.debug('Validating for GT %s (release %s)' %(gt[0],gt[1])) 
         gtCMSSWVersion =  sm.check_cmssw_version( gt[1] )
         gtBoostVersion = self.version_db.lookup_boost_in_cmssw( gtCMSSWVersion  )
         if sm.cmp_boost_version( gtBoostVersion, tagBoostVersion )<0:
             logging.warning( 'The boost version computed from all the iovs in the tag (%s) is incompatible with the gt [%s] %s (consuming ver: %s, snapshot: %s)' %(tagBoostVersion,ngt,gt[0],gtBoostVersion,str(gt[2])))
             if str(gt[2]) not in boost_snapshot_map.keys():
                 tagSnapshotBoostVersion = None
                 minIov = None
                 tagSnapshotBoostVersion, minIov = self.process_tag_boost_version(t, timetype, tagSnapshotBoostVersion, minIov, gt[2])
                 if tagSnapshotBoostVersion is not None:
                     boost_snapshot_map[str(gt[2])] = tagSnapshotBoostVersion
                 else:
                     continue
             else:
                 tagSnapshotBoostVersion = boost_snapshot_map[str(gt[2])] 
             if sm.cmp_boost_version( gtBoostVersion, tagSnapshotBoostVersion )<0:
                 logging.error('The snapshot from tag used by gt %s (consuming ver: %s) has an incompatible combined boost version %s' %(gt[0],gtBoostVersion,tagSnapshotBoostVersion))
                 invalid_gts.append( ( gt[0], gtBoostVersion ) )
     if len(invalid_gts)==0:
         if ngt>0:
             logging.info('boost version for the tag validated in %s referencing Gts' %(ngt))
         else:
             logging.info('No GT referencing this tag found.')
     else:
         logging.error( 'boost version for the tag is invalid.')
     return invalid_gts
Ejemplo n.º 4
0
    def lookup_boost_in_cmssw( self, cmssw_version ):
        cmssw_v = sm.check_cmssw_version(  cmssw_version )
        the_arch = None
        releaseRoot = None
        if sm.is_release_cycle( cmssw_v ):
            cmssw_v = sm.strip_cmssw_version( cmssw_v )
            archs = sm.get_production_arch( cmssw_v )
            for arch in archs:
                path = sm.get_release_root( cmssw_v, arch )
                if os.path.exists(os.path.join(path,cmssw_v)):
                    releaseRoot = path
                    the_arch = arch
                    break
            if releaseRoot is None:
                for arch in archs:
                    the_arch = arch
                    releaseRoot = sm.get_release_root( cmssw_v, arch )    
                    for r in sorted (os.listdir( releaseRoot )):
                        if r.startswith(cmssw_v):
                            cmssw_v = r
        logging.debug('Boost version will be verified in release %s' %cmssw_v) 

        if cmssw_v in self.cmssw_boost_map.keys():
            return self.cmssw_boost_map[cmssw_v]
    
        if releaseRoot is None:
            archs = sm.get_production_arch( cmssw_v )
            for arch in archs:
                path = sm.get_release_root( cmssw_v, arch )
                if os.path.exists(os.path.join(path,cmssw_v)):
                    releaseRoot = path
                    the_arch = arch
                    break
        logging.debug('Release path: %s' %releaseRoot)
        boost_version = sm.get_cmssw_boost( the_arch, '%s/%s' %(releaseRoot,cmssw_v) )
        if not boost_version is None:
            self.cmssw_boost_map[cmssw_v] = boost_version 
            self.insert_cmssw_boost( cmssw_v,boost_version )
        return boost_version