예제 #1
0
#!/usr/bin/env python
########################################################################
# File :    dirac-bookkeeping-file-path
# Author :  Zoltan Mathe
########################################################################
"""
  Return the BK path for the directories of a (list of) files
"""
__RCSID__ = "$Id$"
from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

if __name__ == "__main__":
  dmScript = DMScript()
  dmScript.registerFileSwitches()
  Script.registerSwitch('', 'Full', '   Print out full BK dictionary (default: print out BK path)')
  Script.registerSwitch('', 'GroupBy=', '   Return a list of files per <metadata item>')
  Script.registerSwitch('', 'GroupByPath', '   Return a list of files per BK path')
  Script.registerSwitch('', 'GroupByProduction', '   Return a list of files per production')
  Script.registerSwitch('', 'Summary', '   Only give the number of files in each group (default: GroupByPath)')
  Script.registerSwitch('', 'List', '   Print a list of group keys')
  Script.registerSwitch('', 'IgnoreFileType', '   Ignore file type in path (useful for stripping)')
  Script.setUsageMessage('\n'.join([__doc__.split('\n')[1],
                                    'Usage:',
                                    '  %s [option|cfgfile] ... LFN|File' % Script.scriptName,
                                    'Arguments:',
                                    '  LFN:      Logical File Name',
                                    '  File:     Name of the file with a list of LFNs']))
  Script.parseCommandLine()

  from LHCbDIRAC.BookkeepingSystem.Client.ScriptExecutors import executeFilePath
  executeFilePath(dmScript)
예제 #2
0
#!/usr/bin/env python
'''
    Check if all files have a replica in a certain (set of) SE )Tier1-Archive default)
    List the files that don't have a replica in the specified SE (group)
'''
__RCSID__ = "$Id$"


if __name__ == '__main__':

  # Script initialization
  from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

  Script.registerSwitch('', 'FixIt', '   Take action to fix the catalogs')
  Script.setUsageMessage('\n'.join([__doc__,
                                    'Usage:',
                                    '  %s [option|cfgfile] [values]' % Script.scriptName, ]))
  dmScript = DMScript()
  dmScript.registerDMSwitches()  # Directory
  Script.parseCommandLine(ignoreErrors=True)
  fixIt = False
  for opt, val in Script.getUnprocessedSwitches():
    if opt == 'FixIt':
      fixIt = True

  # imports
  from DIRAC import gLogger
  from LHCbDIRAC.DataManagementSystem.Client.ConsistencyChecks import ConsistencyChecks
  cc = ConsistencyChecks()
  cc.directories = dmScript.getOption('Directory', [])
  cc.lfns = dmScript.getOption('LFNs', []) + [lfn for arg in Script.getPositionalArgs() for lfn in arg.split(',')]
예제 #3
0
Get the list of all the user files.
"""
__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

if __name__ == "__main__":

    days = 0
    months = 0
    years = 0
    depth = 1
    wildcard = '*'
    dmScript = DMScript()
    dmScript.registerNamespaceSwitches()
    Script.registerSwitch("", "Days=",
                          "Match files older than number of days [%s]" % days)
    Script.registerSwitch(
        "", "Months=", "Match files older than number of months [%s]" % months)
    Script.registerSwitch(
        "", "Years=", "Match files older than number of years [%s]" % years)
    Script.registerSwitch("", "Wildcard=",
                          "Wildcard for matching filenames [%s]" % wildcard)
    Script.registerSwitch('', 'Output', 'Write list to an output file')
    Script.registerSwitch("", "EmptyDirs",
                          "Create a list of empty directories")
    Script.registerSwitch(
        "", "Depth=",
        "Depth to which recursively browse (default = %d)" % depth)
    Script.registerSwitch("r", "Recursive", "Set depth to infinite")
    Script.registerSwitch('', 'NoDirectories',
                          'Only print out only files, not subdirectories')
예제 #4
0
      seList += siteSEs
  return seList


if __name__ == '__main__':

  # Script initialization
  from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

  Script.setUsageMessage('\n'.join([__doc__,
                                    'Usage:',
                                    '  %s [option|cfgfile] [values]' % Script.scriptName, ]))
  dmScript = DMScript()
  dmScript.registerDMSwitches()
  maxFiles = 20
  Script.registerSwitch('', 'FixIt', '   Take action to fix the catalogs and storage')
  Script.registerSwitch('', 'Replace', '   Replace bad or missing replicas (default=False)')
  Script.registerSwitch('', 'NoBK', '   Do not check with BK')
  Script.registerSwitch('', 'Verbose', '   Set logging mode to INFO')
  Script.registerSwitch('', 'MaxFiles=', '   Set maximum number of files to be printed (default %d)' % maxFiles)
  Script.parseCommandLine(ignoreErrors=True)

  from DIRAC import gLogger

  fixIt = False
  bkCheck = True
  replace = False
  verbose = False
  for switch in Script.getUnprocessedSwitches():
    if switch[0] == 'FixIt':
      fixIt = True
예제 #5
0
#!/usr/bin/env python
########################################################################
# File :    dirac-bookkeeping-get-file-descendants
# Author :  Zoltan Mathe
########################################################################
"""
  Returns descendants for a (list of) LFN(s)
"""
__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

if __name__ == "__main__":
    dmScript = DMScript()
    dmScript.registerFileSwitches()
    Script.registerSwitch('', 'All',
                          'Do not restrict to descendants with replicas')
    Script.registerSwitch('', 'Full',
                          'Get full metadata information on descendants')
    level = 1
    Script.registerSwitch('', 'Depth=',
                          'Number of processing levels (default:%d)' % level)
    Script.registerSwitch(
        '', 'Production=',
        'Restrict to descendants in a given production (at any depth)')
    Script.setUsageMessage('\n'.join([
        __doc__.split('\n')[1], 'Usage:',
        '  %s [option|cfgfile] ... [LFN|File] [Depth]' % Script.scriptName,
        'Arguments:', '  LFN:      Logical File Name',
        '  File:     Name of the file with a list of LFNs',
        '  Depth:    Number of levels to search (default: %d)' % level
    ]))
예제 #6
0
#! /usr/bin/env python
"""
   Fix the luminosity of all descendants of a set of RAW files, if hte run is Finished
"""

__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

if __name__ == "__main__":

    dmScript = DMScript()
    dmScript.registerBKSwitches()

    Script.registerSwitch('', 'DoIt', '   Fix the BK database (default No)')
    Script.registerSwitch(
        '', 'Force',
        '   Force checking all descendants and not only those of files with bad lumi (default No)'
    )
    Script.setUsageMessage('\n'.join([
        __doc__.split('\n')[1],
        'Usage:',
        '  %s [option|cfgfile]' % Script.scriptName,
    ]))

    Script.addDefaultOptionValue('LogLevel', 'error')
    Script.parseCommandLine(ignoreErrors=False)

    from LHCbDIRAC.BookkeepingSystem.Client.ScriptExecutors import executeFixLuminosity
    executeFixLuminosity(dmScript)
예제 #7
0
#!/usr/bin/env python
"""
  Retrieve an access URL for an LFN replica given a valid DIRAC SE.
"""

__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

if __name__ == "__main__":

    dmScript = DMScript()
    dmScript.registerFileSwitches()
    dmScript.registerSiteSwitches()
    Script.registerSwitch(
        '', 'Protocol=',
        '   Define the protocol for which a tURL is requested (default:root)')
    Script.setUsageMessage('\n'.join(
        __doc__.split('\n') + [
            'Usage:',
            '  %s [option|cfgfile] ... [LFN[,LFN2[,LFN3...]]] SE[,SE2...]' %
            Script.scriptName, 'Arguments:',
            '  LFN:      Logical File Name or file containing LFNs',
            '  SE:       Valid DIRAC SE'
        ]))
    Script.parseCommandLine(ignoreErrors=True)

    from LHCbDIRAC.DataManagementSystem.Client.ScriptExecutors import executeAccessURL
    from DIRAC import exit
    exit(executeAccessURL(dmScript))
#!/usr/bin/env python
########################################################################
# File :    dirac-bookkeeping-get-conditions
# Author :  Zoltan Mathe
########################################################################
"""
  Returns list of Conditions for a run range, by default only if there is a FULL stream
"""
__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import Script

if __name__ == "__main__":
    Script.registerSwitch('', 'Runs=', 'Run range or list')
    Script.registerSwitch('', 'ByRange',
                          'List by range rather than by item value')
    Script.registerSwitch('', 'Force',
                          'Include runs even if no FULL stream is present')
    Script.setUsageMessage('\n'.join([
        __doc__.split('\n')[1], 'Usage:',
        '  %s [option|cfgfile] ... ' % Script.scriptName
    ]))

    Script.parseCommandLine(ignoreErrors=True)

    from LHCbDIRAC.BookkeepingSystem.Client.ScriptExecutors import executeRunInfo
    executeRunInfo('DataTakingDescription')
예제 #9
0
# Author :  Ph. Charpentier
########################################################################
"""
  Gets the metadata of a (list of) LHCb LFNs/PFNs given a valid DIRAC SE (or for all replicas)
  Only the LFN contained in the PFN is considered, unlike the DIRAC similar script
"""
__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script, printDMResult

if __name__ == "__main__":

    dmScript = DMScript()
    dmScript.registerFileSwitches()
    dmScript.registerSiteSwitches()
    Script.registerSwitch('', 'Check',
                          '   Checks the PFN metadata vs LFN metadata')
    Script.registerSwitch(
        '', 'Exists',
        '   Only reports if the file exists (and checks the checksum)')
    Script.registerSwitch('', 'Summary',
                          '   Only prints a summary on existing files')
    Script.setUsageMessage('\n'.join([
        __doc__, 'Usage:',
        '  %s [option|cfgfile] ... [URL[,URL2[,URL3...]]] SE[ SE2...]' %
        Script.scriptName, 'Arguments:',
        '  URL:      Logical/Physical File Name or file containing URLs',
        '  SE:       Valid DIRAC SE'
    ]))
    Script.parseCommandLine(ignoreErrors=True)

    from LHCbDIRAC.DataManagementSystem.Client.ScriptExecutors import executePfnMetadata
예제 #10
0
#!/usr/bin/env python
"""
 List all BK paths matching a wildcard path ('...' is the wildcard character, or '*' but enclose with quotes)
"""

__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script, ProgressBar
from DIRAC import gLogger, exit

if __name__ == "__main__":

    Script.registerSwitch("B:", "BKQuery=", "   Bookkeeping query path")
    Script.setUsageMessage('\n'.join([
        __doc__.split('\n')[1],
        'Usage:',
        '  %s [option|cfgfile] ...' % Script.scriptName,
    ]))

    Script.parseCommandLine(ignoreErrors=True)

    bkPaths = []
    for opt, val in Script.getUnprocessedSwitches():
        if opt == 'BKQuery':
            bkPaths = val.split(',')
    if not bkPaths:
        gLogger.error('No BK path provided...')
        Script.showHelp()
        exit(1)

    from LHCbDIRAC.BookkeepingSystem.Client.BKQuery import getProcessingPasses, BKQuery
"""
   Set the visibility flag to a dataset
"""

__RCSID__ = "$Id$"

from DIRAC import exit as dExit, gLogger
from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

if __name__ == "__main__":

    dmScript = DMScript()
    dmScript.registerBKSwitches()
    dmScript.registerFileSwitches()

    Script.registerSwitch('', 'List', '   Print out the list of LFNs')
    Script.setUsageMessage('\n'.join([
        __doc__.split('\n')[1],
        'Usage:',
        '  %s [option|cfgfile]' % Script.scriptName,
    ]))

    Script.parseCommandLine(ignoreErrors=False)
    dumpList = False
    for switch in Script.getUnprocessedSwitches():
        if switch[0] == 'List':
            dumpList = True

    bkQuery = dmScript.getBKQuery()
    lfns = dmScript.getOption('LFNs', [])
    if not bkQuery and not lfns:
예제 #12
0
#!/usr/bin/env python
"""
Remove replicas of a (list of) LFNs at a list of sites. It is possible to request a minimum of remaining replicas
"""

__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

if __name__ == "__main__":
    dmScript = DMScript()
    dmScript.registerFileSwitches()
    dmScript.registerSiteSwitches()

    Script.registerSwitch(
        "n", "NoFC",
        " use this option to force the removal from storage of replicas not in FC"
    )
    Script.registerSwitch(
        '', 'ReduceReplicas=',
        '  specify the number of replicas you want to keep (default SE: Tier1-USER)'
    )
    Script.registerSwitch(
        "", "Force",
        " use this option for force the removal of replicas even if last one")
    Script.setUsageMessage('\n'.join(
        __doc__.split('\n') + [
            'Usage:',
            '  %s [option|cfgfile] ... [LFN[,LFN2[,LFN3...]]] SE[,SE2...]' %
            Script.scriptName, 'Arguments:',
            '  LFN:      Logical File Name or file containing LFNs',
            '  SE:       Valid DIRAC SE'
#!/usr/bin/env python
########################################################################
# File :    dirac-bookkeeping-get-run-ranges
# Author :  Zoltan Mathe
########################################################################
"""
  Returns run ranges, split by conditions and by run gaps or time interval between them
"""
__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import Script

if __name__ == "__main__":
    Script.registerSwitch('', 'Activity=',
                          'Specify the BK activity (e.g. Collision15)')
    Script.registerSwitch(
        '', 'Runs=',
        'Run range or list (can be used with --Activity to reduce the run range)'
    )
    Script.registerSwitch(
        '', 'Fast',
        'Include runs even if no FULL stream is present (much faster)')
    Script.registerSwitch('', 'DQFlag=', 'Specify the DQ flag (default: all)')
    Script.registerSwitch('', 'RunGap=',
                          'Gap between run ranges, in number of runs')
    Script.registerSwitch('', 'TimeGap=',
                          'Gap between run ranges, in number of days')
    Script.setUsageMessage('\n'.join([
        __doc__.split('\n')[1], 'Usage:',
        '  %s [option|cfgfile] ... ' % Script.scriptName
    ]))
예제 #14
0
########################################################################
# File :    dirac-wms-job-parameters
# Author :  Philippe Charpentier
########################################################################
"""
  Retrieve parameters associated to the given DIRAC job
"""

# FIXME: this is almost the same of vanilla DIRAC script that has the same name

__RCSID__ = "$Id$"

import DIRAC
from LHCbDIRAC.DataManagementSystem.Client.DMScript import Script, printDMResult

Script.registerSwitch('', 'Parameters=',
                      '   If present, print out only those parameters')
Script.setUsageMessage('\n'.join([
    __doc__.split('\n')[1], 'Usage:',
    '  %s [option|cfgfile] ... JobID ...' % Script.scriptName, 'Arguments:',
    '  JobID:    DIRAC Job ID'
]))
Script.parseCommandLine(ignoreErrors=True)
args = Script.getPositionalArgs()

if len(args) < 1:
    Script.showHelp()
parameters = None
for switch in Script.getUnprocessedSwitches():
    if switch[0] == 'Parameters':
        parameters = switch[1].split(',')
#! /usr/bin/env python
"""
   Get statistical information on a dataset
"""

__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

if __name__ == "__main__":

  dmScript = DMScript()
  dmScript.registerBKSwitches()
  dmScript.registerFileSwitches()

  Script.registerSwitch( '', 'TriggerRate', '   For RAW files, returns the trigger rate' )
  Script.registerSwitch( '', 'ListRuns', '   Give a list of runs (to be used with --Trigger)' )
  Script.registerSwitch( '', 'ListFills', '   Give a list of fills (to be used with --Trigger)' )
  Script.setUsageMessage( '\n'.join( [ __doc__.split( '\n' )[1],
                                       'Usage:',
                                       '  %s [option|cfgfile]' % Script.scriptName, ] ) )

  Script.parseCommandLine( ignoreErrors = False )

  from LHCbDIRAC.BookkeepingSystem.Client.ScriptExecutors import executeGetStats
  executeGetStats( dmScript )
예제 #16
0
# File :    dirac-dms-pfn-metadata.py
# Author :  Ph. Charpentier
########################################################################
"""
  Check existence of a (list of) LHCb LFNs/PFNs given a valid DIRAC SE (or for all replicas)
  Only the LFN contained in the PFN is considered, unlike the DIRAC similar script
"""
__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script, printDMResult

if __name__ == "__main__":

    dmScript = DMScript()
    dmScript.registerFileSwitches()
    dmScript.registerSiteSwitches()
    Script.registerSwitch('', 'Summary',
                          '   Only prints a summary on existing files')
    Script.setUsageMessage('\n'.join([
        __doc__, 'Usage:',
        '  %s [option|cfgfile] ... [URL[,URL2[,URL3...]]] SE[ SE2...]' %
        Script.scriptName, 'Arguments:',
        '  URL:      Logical/Physical File Name or file containing URLs',
        '  SE:       Valid DIRAC SE'
    ]))
    Script.parseCommandLine(ignoreErrors=True)

    from LHCbDIRAC.DataManagementSystem.Client.ScriptExecutors import executePfnMetadata
    from DIRAC import exit
    exit(executePfnMetadata(dmScript, check=True, exists=True))
예제 #17
0
########################################################################
# File :    dirac-bookkeeping-get-file-ancestors
# Author :  Zoltan Mathe
########################################################################
"""
  returns ancestors for a (list of) LFN(s) 
"""
__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

if __name__ == "__main__":
    dmScript = DMScript()
    dmScript.registerFileSwitches()
    level = 1
    Script.registerSwitch('', 'All',
                          'Do not restrict to ancestors with replicas')
    Script.registerSwitch('', 'Full',
                          'Get full metadata information on ancestors')
    Script.registerSwitch('', 'Depth=',
                          'Number of processing levels (default:%d)' % level)
    Script.setUsageMessage('\n'.join([
        __doc__.split('\n')[1], 'Usage:',
        '  %s [option|cfgfile] ... [LFN|File] [Level]' % Script.scriptName,
        'Arguments:', '  LFN:      Logical File Name',
        '  File:     Name of the file with a list of LFNs',
        '  Level:    Number of levels to search (default: %d)' % level
    ]))

    Script.parseCommandLine(ignoreErrors=True)

    from LHCbDIRAC.BookkeepingSystem.Client.ScriptExecutors import executeFileAncestors
#!/usr/bin/env python
########################################################################
# File :    dirac-bookkeeping-get-files.py
# Author :  Zoltan Mathe
########################################################################
"""
  Retrieve files of a BK query
"""
__RCSID__ = "$Id$"
from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

dmScript = DMScript()
dmScript.registerBKSwitches()
Script.registerSwitch('', 'File=', '   Provide a list of BK paths')
Script.registerSwitch('', 'Term',
                      '   Provide the list of BK paths from terminal')
Script.registerSwitch('', 'Output=',
                      '  Specify a file that will contain the list of files')
Script.registerSwitch('', 'OptionsFile=', '   Create a Gaudi options file')
maxFiles = 20
Script.registerSwitch(
    '', 'MaxFiles=',
    '   Print only <MaxFiles> lines on stdout (%d if output, else All)' %
    maxFiles)
Script.setUsageMessage('\n'.join([
    __doc__.split('\n')[1], 'Usage:',
    '  %s [option|cfgfile] ... ProdID Type' % Script.scriptName
]))

Script.parseCommandLine()
예제 #19
0
if __name__ == '__main__':

    # Script initialization
    from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script
    import DIRAC

    Script.setUsageMessage('\n'.join([
        __doc__,
        'Usage:',
        '  %s [option|cfgfile] [values]' % Script.scriptName,
    ]))
    dmScript = DMScript()
    dmScript.registerNamespaceSwitches()  # Directory
    dmScript.registerFileSwitches()  # File, LFNs
    dmScript.registerBKSwitches()
    Script.registerSwitch('', 'FixBK', '   Take action to fix the BK')
    Script.registerSwitch('', 'FixFC', '   Take action to fix the FC')
    Script.registerSwitch(
        '', 'AffectedRuns',
        '   List the runs affected by the encountered problem')
    Script.parseCommandLine(ignoreErrors=True)

    from DIRAC import gLogger
    fixBK = False
    fixFC = False
    listAffectedRuns = False
    for switch in Script.getUnprocessedSwitches():
        if switch[0] == 'FixFC':
            fixFC = True
        if switch[0] == 'FixBK':
            fixBK = True
#!/usr/bin/env python
"""
Remove replicas of a (list of) LFNs from all non-ARCHIVE storage elements
"""

__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

if __name__ == "__main__":
  dmScript = DMScript()
  dmScript.registerFileSwitches()
  dmScript.registerBKSwitches()

  Script.registerSwitch("", "Force", " use this option for force the removal of files without ARCHIVE")
  Script.setUsageMessage('\n'.join(__doc__.split('\n') + [
      'Usage:',
      '  %s [option|cfgfile] ... [LFN[,LFN2[,LFN3...]]] SE[,SE2...]' % Script.scriptName]))
  Script.parseCommandLine()

  from LHCbDIRAC.DataManagementSystem.Client.ScriptExecutors import executeRemoveReplicas
  from DIRAC import exit
  exit(executeRemoveReplicas(dmScript, allDisk=True))
예제 #21
0
# File :   dirac-admin-lfn-replicas
# Author : Stuart Paterson
########################################################################
"""
    Show replicas for a (set of) LFNs
"""
__RCSID__ = "$Id$"
__VERSION__ = "$Revision: 86918 $"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

if __name__ == "__main__":

    dmScript = DMScript()
    dmScript.registerFileSwitches()
    Script.registerSwitch('a', "All", "  Also show inactive replicas")
    Script.registerSwitch('', 'DiskOnly', '  Show only disk replicas')
    Script.registerSwitch('', 'PreferDisk',
                          "  If disk replica, don't show tape replicas")
    Script.registerSwitch('', 'ForJobs',
                          '  Select only replicas that can be used for jobs')

    Script.setUsageMessage('\n'.join([
        __doc__,
        'Usage:',
        '  %s [option|cfgfile] [<LFN>] [<LFN>...]' % Script.scriptName,
    ]))

    Script.parseCommandLine(ignoreErrors=False)

    from LHCbDIRAC.DataManagementSystem.Client.ScriptExecutors import executeLfnReplicas
#!/usr/bin/env python
"""
    Set a (set of) LFNs as problematic in the FC and in the BK and transformation system if all replicas are problematic
"""
__RCSID__ = "$Id$"
__VERSION__ = "$Revision: 87258 $"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

if __name__ == "__main__":

  dmScript = DMScript()
  dmScript.registerFileSwitches()
  dmScript.registerSiteSwitches()

  Script.registerSwitch('', 'Reset', '   Reset files to OK')
  Script.registerSwitch('', 'Full', '   Give full list of files')
  Script.registerSwitch('', 'NoAction', '   No action taken, just give stats')

  Script.setUsageMessage('\n'.join([__doc__.split('\n')[1],
                                    'Usage:',
                                    '  %s [option|cfgfile] [<LFN>] [<LFN>...]' % Script.scriptName, ]))

  Script.parseCommandLine(ignoreErrors=False)

  from LHCbDIRAC.DataManagementSystem.Client.ScriptExecutors import executeSetProblematicFiles
  from DIRAC import exit
  exit(executeSetProblematicFiles(dmScript))
#!/usr/bin/env python
########################################################################
# File :    dirac-dms-replicate-to-run-destination
# Author  : Philippe Charpentier
########################################################################
"""
  Replicate a (list of) existing LFN(s) to Ses defined by the run destination
"""
__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

if __name__ == "__main__":
    dmScript = DMScript()
    dmScript.registerFileSwitches()
    dmScript.registerSiteSwitches()

    Script.registerSwitch('', 'RemoveSource',
                          '   If set, the source replica(s) will be removed')

    Script.setUsageMessage('\n'.join([
        __doc__, 'Usage:',
        '  %s [option|cfgfile] ...  [LFN1[,LFN2,[...]]] Dest[,Dest2[,...]] [Source [Cache]]'
        % Script.scriptName, 'Arguments:', '  Dest:     Valid DIRAC SE(s)'
    ]))
    Script.parseCommandLine(ignoreErrors=True)

    from LHCbDIRAC.DataManagementSystem.Client.ScriptExecutors import executeReplicateToRunDestination
    from DIRAC import exit
    exit(executeReplicateToRunDestination(dmScript))
예제 #24
0
########################################################################
# File :    dirac-bookkeeping-get-file-sisters
# Author :  Zoltan Mathe
########################################################################
"""
  Report sisters or cousins (i.e. descendant of a parent or ancestor) for a (list of) LFN(s)
"""
__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

if __name__ == "__main__":

    dmScript = DMScript()
    dmScript.registerFileSwitches()
    Script.registerSwitch('', 'All',
                          'Do not restrict to sisters with replicas')
    Script.registerSwitch('', 'Full',
                          'Get full metadata information on sisters')
    level = 1
    Script.registerSwitch(
        '', 'Depth=',
        'Number of ancestor levels (default:%d), 2 would be cousins, 3 grand-cousins etc...'
        % level)
    Script.registerSwitch(
        '', 'Production=',
        'Production to check for sisters (default=same production)')
    Script.registerSwitch('', 'AllFileTypes',
                          'Consider also files with a different type')
    Script.setUsageMessage('\n'.join([
        __doc__.split('\n')[1], 'Usage:',
        '  %s [option|cfgfile] ... [LFN|File] [Level]' % Script.scriptName
예제 #25
0
#! /usr/bin/env python
"""
   Get statistical information on a dataset
"""

__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

if __name__ == "__main__":

    dmScript = DMScript()
    dmScript.registerBKSwitches()
    dmScript.registerFileSwitches()

    Script.registerSwitch('', 'ByStream', '   Get rejection for each stream')

    Script.setUsageMessage('\n'.join([
        __doc__.split('\n')[1],
        'Usage:',
        '  %s [option|cfgfile]' % Script.scriptName,
    ]))

    Script.parseCommandLine(ignoreErrors=False)

    from LHCbDIRAC.BookkeepingSystem.Client.ScriptExecutors import executeRejectionStats
    executeRejectionStats(dmScript)
예제 #26
0
#!/usr/bin/env python
"""
  Remove the given file or a list of files from the File Catalog and from the storage
"""
__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script

if __name__ == "__main__":
    dmScript = DMScript()
    dmScript.registerBKSwitches()
    dmScript.registerFileSwitches()

    Script.registerSwitch(
        '', 'IncludeProcessedFiles',
        '  Forced to set Removed the files in status Processed (default:not reset)'
    )
    Script.setUsageMessage('\n'.join([
        __doc__,
        'Usage:',
        '  %s [option|cfgfile] [<LFN>] [<LFN>...]' % Script.scriptName,
    ]))

    Script.parseCommandLine()

    from LHCbDIRAC.DataManagementSystem.Client.ScriptExecutors import executeRemoveFiles
    from DIRAC import exit
    exit(executeRemoveFiles(dmScript))
예제 #27
0
#!/usr/bin/env python
########################################################################
# File :    dirac-bookkeeping-get-tck
# Author :  Zoltan Mathe
########################################################################
"""
  Returns list of TCKs for a run range, by default only if there is a FULL stream
"""
__RCSID__ = "$Id$"

from LHCbDIRAC.DataManagementSystem.Client.DMScript import Script

if __name__ == "__main__":
    Script.registerSwitch('', 'Runs=', 'Run range or list')
    Script.registerSwitch('', 'ByRange',
                          'List by range rather than by item value')
    Script.registerSwitch('', 'Force',
                          'Include runs even if no FULL stream is present')
    Script.registerSwitch('', 'DQFlag=', 'Specify the DQ flag (default: all)')
    Script.setUsageMessage('\n'.join([
        __doc__.split('\n')[1], 'Usage:',
        '  %s [option|cfgfile] ... ' % Script.scriptName
    ]))

    Script.parseCommandLine(ignoreErrors=True)

    from LHCbDIRAC.BookkeepingSystem.Client.ScriptExecutors import executeRunInfo
    executeRunInfo('Tck')
예제 #28
0
if __name__ == '__main__':

    # Script initialization
    from LHCbDIRAC.DataManagementSystem.Client.DMScript import DMScript, Script
    from DIRAC import gLogger

    Script.setUsageMessage('\n'.join([
        __doc__,
        'Usage:',
        '  %s [option|cfgfile] [values]' % Script.scriptName,
    ]))
    dmScript = DMScript()
    dmScript.registerBKSwitches()
    dmScript.registerFileSwitches()
    Script.registerSwitch('', 'FixIt', '   Take action to fix the catalogs')
    Script.registerSwitch('', 'CheckAllFlags',
                          '   Consider also files with replica flag NO')
    Script.parseCommandLine(ignoreErrors=True)

    fixIt = False
    checkAll = False
    production = 0
    for opt, val in Script.getUnprocessedSwitches():
        if opt == 'FixIt':
            fixIt = True
        elif opt == 'CheckAllFlags':
            checkAll = True

    # imports
    from LHCbDIRAC.DataManagementSystem.Client.ConsistencyChecks import ConsistencyChecks