From 69699d2b7e6b6f050b2970d9b336f6001f61d67c Mon Sep 17 00:00:00 2001 From: jlenain Date: Thu, 25 May 2023 11:12:24 +0200 Subject: [PATCH 1/8] Update DQM DIRAC job wrappers to make use of remote Apptainer image from GitHub Container Registry --- .../user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh | 2 +- .../jlenain/dqm_job_submitter/submit_dqm_processor.py | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh index 2b1b35d9..2dff1fbd 100755 --- a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh +++ b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh @@ -41,7 +41,7 @@ if [ -z $runnb ]; then exit 1 fi -CONTAINER=nectarchain_w_2023_02.sif +CONTAINER="oras://ghcr.io/cta-observatory/nectarchain:latest" OUTDIR=NectarCAM_DQM_Run${runnb} DIRAC_OUTDIR=/vo.cta.in2p3.fr/user/j/jlenain/nectarcam/dqm diff --git a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py index 4332cc5d..6d54a687 100755 --- a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py +++ b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py @@ -47,7 +47,6 @@ logger.critical('A date should be provided, in a format astropy.time.Time compliant. E.g. "2022-04-01".') sys.exit(1) -container="nectarchain_w_2023_02.sif" executable_wrapper="dqm_processor.sh" ## Possible massive job processing via loop on run numbers: @@ -115,7 +114,6 @@ j.setName(f'NectarCAM DQM run {run}') j.setJobGroup('NectarCAM DQM') sandboxlist = [f'{executable_wrapper}', - f'LFN:/vo.cta.in2p3.fr/user/j/jlenain/local/opt/singularity/nectarchain/{container}', f'LFN:{sqlfile}'] for f in meta['Files']: if f.endswith('.fits.fz') and f'NectarCAM.Run{run}' in f: From 715f8ab27484f30c1692c1a79058e8b500e1feae Mon Sep 17 00:00:00 2001 From: jlenain Date: Thu, 25 May 2023 11:41:28 +0200 Subject: [PATCH 2/8] Fix path to start_calib.py script, and Apptainer environment variables --- .../jlenain/dqm_job_submitter/dqm_processor.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh index 2dff1fbd..395a526f 100755 --- a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh +++ b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh @@ -63,15 +63,19 @@ echo "Cleaning environment \$CLEANED_ENV" [ -z "\$CLEANED_ENV" ] && exec /bin/env -i CLEANED_ENV="Done" HOME=\${HOME} SHELL=/bin/bash /bin/bash -l "\$0" "\$@" -# Some environment variables related to python, to be passed to container: +# Some environment variables related to python, to be passed to container, be it for old Singularity version or recent Apptainer ones: export SINGULARITYENV_MPLCONFIGDIR=/tmp export SINGULARITYENV_NUMBA_CACHE_DIR=/tmp export SINGULARITYENV_NECTARDIR=$NECTARDIR +export APPTAINERENV_MPLCONFIGDIR=/tmp +export APPTAINERENV_NUMBA_CACHE_DIR=/tmp +export APPTAINERENV_NECTARDIR=$NECTARDIR + echo echo "Running" # Instantiate the nectarchain Singularity image, run our DQM example run within it: -cmd="singularity exec --home $PWD $CONTAINER /opt/conda/envs/nectarchain/bin/python /opt/cta/nectarchain/nectarchain/dqm/start_calib.py $LISTRUNS" +cmd="singularity exec --home $PWD $CONTAINER /opt/conda/envs/nectarchain/bin/python /opt/cta/nectarchain/src/nectarchain/dqm/start_calib.py $LISTRUNS" echo \$cmd eval \$cmd EOF From 4bc2da958e640c1c0bea103b156621fdc64770e7 Mon Sep 17 00:00:00 2001 From: jlenain Date: Thu, 25 May 2023 11:46:59 +0200 Subject: [PATCH 3/8] Fix log level setting --- .../jlenain/dqm_job_submitter/submit_dqm_processor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py index 6d54a687..5a936e57 100755 --- a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py +++ b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py @@ -41,7 +41,7 @@ type=str) args = parser.parse_args() -logger.setLevel(args.log) +logger.setLevel(args.log.upper()) if args.date is None: logger.critical('A date should be provided, in a format astropy.time.Time compliant. E.g. "2022-04-01".') From 4bf201333976a5a823fec5213b04b69d2e820b51 Mon Sep 17 00:00:00 2001 From: jlenain Date: Thu, 25 May 2023 14:01:24 +0200 Subject: [PATCH 4/8] Fix arguments for start_cali.py following recent changes in DQM --- .../user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh index 395a526f..82e1085e 100755 --- a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh +++ b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh @@ -52,7 +52,7 @@ mv nectarcam*.sqlite NectarCAM.Run*.fits.fz $NECTARDIR/. LISTRUNS="" for run in $NECTARDIR/NectarCAM.Run${runnb}.*.fits.fz; do - LISTRUNS="$LISTRUNS $run" + LISTRUNS="$LISTRUNS $(basename $run)" done # Create a wrapper BASH script with cleaned environment, see https://redmine.cta-observatory.org/issues/51483 @@ -75,7 +75,7 @@ export APPTAINERENV_NECTARDIR=$NECTARDIR echo echo "Running" # Instantiate the nectarchain Singularity image, run our DQM example run within it: -cmd="singularity exec --home $PWD $CONTAINER /opt/conda/envs/nectarchain/bin/python /opt/cta/nectarchain/src/nectarchain/dqm/start_calib.py $LISTRUNS" +cmd="singularity exec --home $PWD $CONTAINER /opt/conda/envs/nectarchain/bin/python /opt/cta/nectarchain/src/nectarchain/dqm/start_calib.py $NECTARDIR $NECTARDIR -i $LISTRUNS" echo \$cmd eval \$cmd EOF From 36a69f42586af2eb63cf3993f1d67698860b0bba Mon Sep 17 00:00:00 2001 From: LENAIN Jean philippe Date: Fri, 26 May 2023 16:01:12 +0200 Subject: [PATCH 5/8] Adapt DQM launcher scripts following recent DQM updates --- .../dqm_job_submitter/dqm_processor.sh | 64 ++++++++++++------- .../dqm_job_submitter/submit_dqm_processor.py | 4 +- 2 files changed, 44 insertions(+), 24 deletions(-) diff --git a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh index 82e1085e..4199408e 100755 --- a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh +++ b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh @@ -1,6 +1,6 @@ #!/bin/env bash # -# Time-stamp: "2023-01-30 16:21:22 jlenain" +# Time-stamp: "2023-05-26 15:57:50 jlenain" function usage () @@ -41,14 +41,29 @@ if [ -z $runnb ]; then exit 1 fi +WRAPPER="singularity_wrapper.sh" CONTAINER="oras://ghcr.io/cta-observatory/nectarchain:latest" OUTDIR=NectarCAM_DQM_Run${runnb} DIRAC_OUTDIR=/vo.cta.in2p3.fr/user/j/jlenain/nectarcam/dqm +function exit_script() { + return_code=$1 + + # Some cleanup before leaving: + [ -d $CONTAINER ] && rm -rf $CONTAINER + [ -f $CONTAINER ] && rm -f $CONTAINER + [ -d $OUTDIR ] && rm -rf $OUTDIR + [ -f ${OUTDIR}.tar.gz ] && rm -f ${OUTDIR}.tar.gz + [ -d ${OUTDIR} ] && rm -rf ${OUTDIR} + [ -f $WRAPPER ] && rm -f $WRAPPER + + exit $return_code +} + # Halim's DQM code needs to use a specific output directory: export NECTARDIR=$PWD/$OUTDIR -[ ! -d $NECTARDIR ] && mkdir -p $NECTARDIR -mv nectarcam*.sqlite NectarCAM.Run*.fits.fz $NECTARDIR/. +[ ! -d $NECTARDIR ] && mkdir -p $NECTARDIR || exit_script $? +# mv nectarcam*.sqlite NectarCAM.Run*.fits.fz $NECTARDIR/. LISTRUNS="" for run in $NECTARDIR/NectarCAM.Run${runnb}.*.fits.fz; do @@ -56,7 +71,6 @@ for run in $NECTARDIR/NectarCAM.Run${runnb}.*.fits.fz; do done # Create a wrapper BASH script with cleaned environment, see https://redmine.cta-observatory.org/issues/51483 -WRAPPER="sing.sh" cat > $WRAPPER < /dev/null; then + CALLER=singularity + + export SINGULARITYENV_MPLCONFIGDIR=/tmp + export SINGULARITYENV_NUMBA_CACHE_DIR=/tmp + export SINGULARITYENV_NECTARDIR=$NECTARDIR +elif command -v apptainer &> /dev/null; then + CALLER=apptainer + + export APPTAINERENV_MPLCONFIGDIR=/tmp + export APPTAINERENV_NUMBA_CACHE_DIR=/tmp + export APPTAINERENV_NECTARDIR=$NECTARDIR +else + echo "It seems neither Singularity nor Apptainer are available from here" + exit 1 +fi echo echo "Running" # Instantiate the nectarchain Singularity image, run our DQM example run within it: -cmd="singularity exec --home $PWD $CONTAINER /opt/conda/envs/nectarchain/bin/python /opt/cta/nectarchain/src/nectarchain/dqm/start_calib.py $NECTARDIR $NECTARDIR -i $LISTRUNS" +cmd="\$CALLER exec --home $PWD $CONTAINER /opt/conda/envs/nectarchain/bin/python /opt/cta/nectarchain/src/nectarchain/dqm/start_calib.py $PWD $NECTARDIR -i $LISTRUNS" echo \$cmd eval \$cmd EOF -chmod u+x $WRAPPER -./${WRAPPER} +chmod u+x $WRAPPER || exit_script $? +./${WRAPPER} || exit_script $? # Archive the output directory and push it on DIRAC before leaving the job: -tar zcf ${OUTDIR}.tar.gz ${OUTDIR}output/ -dirac-dms-add-file ${DIRAC_OUTDIR}/${OUTDIR}.tar.gz ${OUTDIR}.tar.gz LPNHE-USER - -# Some cleanup before leaving: -[ -d $CONTAINER ] && rm -rf $CONTAINER -[ -f $CONTAINER ] && rm -f $CONTAINER -[ -d $OUTDIR ] && rm -rf $OUTDIR -[ -d ${OUTDIR}output ] && rm -rf ${OUTDIR}output -[ -f $WRAPPER ] && rm -f $WRAPPER +tar zcf ${OUTDIR}.tar.gz ${OUTDIR}/ || exit_script $? +dirac-dms-add-file ${DIRAC_OUTDIR}/${OUTDIR}.tar.gz ${OUTDIR}.tar.gz LPNHE-USER || exit_script $? + +exit_script 0 diff --git a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py index 5a936e57..ccca2b41 100755 --- a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py +++ b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # -# Time-stamp: "2023-02-07 21:39:09 jlenain" +# Time-stamp: "2023-05-26 15:56:23 jlenain" import argparse import sys @@ -131,5 +131,5 @@ j.setInputSandbox(sandboxlist) if not args.dry_run: - res = dirac.submitJob(j) #, mode='local') # for local execution, simulating a DIRAC job on the local machine, instead of submitting it to a DIRAC Computing Element + res = dirac.submitJob(j, mode='local') # for local execution, simulating a DIRAC job on the local machine, instead of submitting it to a DIRAC Computing Element logger.info(f"Submission Result: {res['Value']}") From 141a0be6b28a0d146db3997e4ccb210949d1b875 Mon Sep 17 00:00:00 2001 From: LENAIN Jean philippe Date: Tue, 30 May 2023 13:07:26 +0200 Subject: [PATCH 6/8] Work on DQM DIRAC launcher, handles SQL DB file stored in next-day directory --- .../dqm_job_submitter/dqm_processor.sh | 23 +++++++------- .../dqm_job_submitter/submit_dqm_processor.py | 31 +++++++++++++------ 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh index 4199408e..aee23a94 100755 --- a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh +++ b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/dqm_processor.sh @@ -1,6 +1,6 @@ #!/bin/env bash # -# Time-stamp: "2023-05-26 15:57:50 jlenain" +# Time-stamp: "2023-05-30 12:05:14 jlenain" function usage () @@ -50,8 +50,8 @@ function exit_script() { return_code=$1 # Some cleanup before leaving: - [ -d $CONTAINER ] && rm -rf $CONTAINER - [ -f $CONTAINER ] && rm -f $CONTAINER + # [ -d $CONTAINER ] && rm -rf $CONTAINER + # [ -f $CONTAINER ] && rm -f $CONTAINER [ -d $OUTDIR ] && rm -rf $OUTDIR [ -f ${OUTDIR}.tar.gz ] && rm -f ${OUTDIR}.tar.gz [ -d ${OUTDIR} ] && rm -rf ${OUTDIR} @@ -66,7 +66,7 @@ export NECTARDIR=$PWD/$OUTDIR # mv nectarcam*.sqlite NectarCAM.Run*.fits.fz $NECTARDIR/. LISTRUNS="" -for run in $NECTARDIR/NectarCAM.Run${runnb}.*.fits.fz; do +for run in $PWD/NectarCAM.Run${runnb}.*.fits.fz; do LISTRUNS="$LISTRUNS $(basename $run)" done @@ -78,20 +78,19 @@ echo "Cleaning environment \$CLEANED_ENV" # Some environment variables related to python, to be passed to container, be it for old Singularity version or recent Apptainer ones: +export SINGULARITYENV_MPLCONFIGDIR=/tmp +export SINGULARITYENV_NUMBA_CACHE_DIR=/tmp +export SINGULARITYENV_NECTARDIR=$NECTARDIR + +export APPTAINERENV_MPLCONFIGDIR=/tmp +export APPTAINERENV_NUMBA_CACHE_DIR=/tmp +export APPTAINERENV_NECTARDIR=$NECTARDIR # Handle Singularity or Apptainer case: if command -v singularity &> /dev/null; then CALLER=singularity - - export SINGULARITYENV_MPLCONFIGDIR=/tmp - export SINGULARITYENV_NUMBA_CACHE_DIR=/tmp - export SINGULARITYENV_NECTARDIR=$NECTARDIR elif command -v apptainer &> /dev/null; then CALLER=apptainer - - export APPTAINERENV_MPLCONFIGDIR=/tmp - export APPTAINERENV_NUMBA_CACHE_DIR=/tmp - export APPTAINERENV_NECTARDIR=$NECTARDIR else echo "It seems neither Singularity nor Apptainer are available from here" exit 1 diff --git a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py index ccca2b41..6ad36dc8 100755 --- a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py +++ b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # -# Time-stamp: "2023-05-26 15:56:23 jlenain" +# Time-stamp: "2023-05-30 11:42:52 jlenain" import argparse import sys @@ -10,6 +10,7 @@ # astropy imports from astropy import time +from astropy import units as u # DIRAC imports from DIRAC.Interfaces.API.Dirac import Dirac @@ -56,6 +57,10 @@ processDate = time.Time(args.date) dfcDir = f'/vo.cta.in2p3.fr/nectarcam/{processDate.ymdhms[0]}/{processDate.ymdhms[0]}{str(processDate.ymdhms[1]).zfill(2)}{str(processDate.ymdhms[2]).zfill(2)}' +# The relevant DB file may be stored in the directory corresponding to the day after: +processDateTomorrow = processDate + 1. * u.day +dfcDirTomorrow = f'/vo.cta.in2p3.fr/nectarcam/{processDateTomorrow.ymdhms[0]}/{processDateTomorrow.ymdhms[0]}{str(processDateTomorrow.ymdhms[1]).zfill(2)}{str(processDateTomorrow.ymdhms[2]).zfill(2)}' + # Sometimes, for unkown reason, the connection to the DFC can fail, try a few times: sleep_time = 2 num_retries = 3 @@ -75,21 +80,28 @@ sys.exit(1) infos = dfc.listDirectory(dfcDir) +infosTomorrow = dfc.listDirectory(dfcDirTomorrow) if not infos['OK'] or not infos['Value']['Successful']: logger.critical(f"Could not properly retrieve the file metadata for {dfcDir} ... Exiting !") sys.exit(1) +if not infosTomorrow['OK'] or not infosTomorrow['Value']['Successful']: + logger.warning(f"Could not properly retrieve the file metadata for {dfcDirTomorrow} ... Continuing !") meta = infos['Value']['Successful'][dfcDir] +metaTomorrow = infosTomorrow['Value']['Successful'][dfcDirTomorrow] runlist = [] -sqlfile = None +sqlfilelist = [] for f in meta['Files']: if f.endswith('.fits.fz'): run = f.split('NectarCAM.Run')[1].split('.')[0] if run not in runlist and run is not None: runlist.append(run) if f.endswith('.sqlite'): - sqlfile = f + sqlfilelist.append(f) +for f in metaTomorrow['Files']: + if f.endswith('.sqlite'): + sqlfilelist.append(f) if args.run is not None: if args.run not in runlist: logger.critical(f'Your specified run {args.run} was not found in {dfcDir}, aborting...') @@ -98,10 +110,10 @@ logger.info(f'Found runs {runlist} in {dfcDir}') -if sqlfile is None: - logger.critical('Could not find any SQLite file in {dfcDir}, aborting...') +if len(sqlfilelist) == 0: + logger.critical('Could not find any SQLite file in {dfcDir} nor in {dfcDirTomorrow}, aborting...') sys.exit(1) -logger.info(f'Found SQLite file {sqlfile} in {dfcDir}') +logger.info(f'Found SQLite files {sqlfilelist} in {dfcDir} and {dfcDirTomorrow}') # Now, submit the DIRAC jobs: # for run in ['2721']: @@ -113,12 +125,13 @@ # j.setDestination('LCG.GRIF.fr') j.setName(f'NectarCAM DQM run {run}') j.setJobGroup('NectarCAM DQM') - sandboxlist = [f'{executable_wrapper}', - f'LFN:{sqlfile}'] + sandboxlist = [f'{executable_wrapper}'] for f in meta['Files']: if f.endswith('.fits.fz') and f'NectarCAM.Run{run}' in f: sandboxlist.append(f'LFN:{f}') - if len(sandboxlist) < 4: + for s in sqlfilelist: + sandboxlist.append(f'LFN:{s}') + if len(sandboxlist) < 2: logger.critical(f'''Misformed sandboxlist, actual data .fits.fz files missing: {sandboxlist} From 212d0371e1813058d43b613bb0693cf347e20870 Mon Sep 17 00:00:00 2001 From: LENAIN Jean philippe Date: Tue, 30 May 2023 13:08:07 +0200 Subject: [PATCH 7/8] Submit to DIRAC in non-local mode --- .../jlenain/dqm_job_submitter/submit_dqm_processor.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py index 6ad36dc8..785f8924 100755 --- a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py +++ b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # -# Time-stamp: "2023-05-30 11:42:52 jlenain" +# Time-stamp: "2023-05-30 13:07:50 jlenain" import argparse import sys @@ -144,5 +144,5 @@ j.setInputSandbox(sandboxlist) if not args.dry_run: - res = dirac.submitJob(j, mode='local') # for local execution, simulating a DIRAC job on the local machine, instead of submitting it to a DIRAC Computing Element + res = dirac.submitJob(j) # , mode='local') # for local execution, simulating a DIRAC job on the local machine, instead of submitting it to a DIRAC Computing Element logger.info(f"Submission Result: {res['Value']}") From 7802ba51a0cdda4a16e7c21e8f3f979389e0bbb3 Mon Sep 17 00:00:00 2001 From: LENAIN Jean philippe Date: Tue, 30 May 2023 13:09:40 +0200 Subject: [PATCH 8/8] Fix parsing log level, when none is provided and default is used --- .../jlenain/dqm_job_submitter/submit_dqm_processor.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py index 785f8924..084dd4f6 100755 --- a/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py +++ b/src/nectarchain/user_scripts/jlenain/dqm_job_submitter/submit_dqm_processor.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # -# Time-stamp: "2023-05-30 13:07:50 jlenain" +# Time-stamp: "2023-05-30 13:09:04 jlenain" import argparse import sys @@ -37,7 +37,7 @@ default=False, help='dry run (does not actually submit jobs)') parser.add_argument('--log', - default=logging.INFO, + default='info', help='debug output', type=str) args = parser.parse_args()