diff --git a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py index d2633586853..c3d19996ae1 100644 --- a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py +++ b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py @@ -1,14 +1,13 @@ #!/usr/bin/env python """ - dirac-my-great-script +This script prints out how great is it, shows raw queries and sets the +number of pings. - This script prints out how great is it, shows raw queries and sets the - number of pings. +Usage: + dirac-my-great-script [options] - Usage: - dirac-my-great-script [option|cfgfile] - Arguments: - [ ...] +Arguments: + [ ...] """ from __future__ import absolute_import from __future__ import division @@ -63,9 +62,6 @@ def registerSwitches(): for switch in switches: Script.registerSwitch(*switch) - # Define a help message - Script.setUsageMessage(__doc__) - def parseSwitches(): ''' diff --git a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-ping-info.py b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-ping-info.py index 5128c8aff0e..50810ef40d1 100644 --- a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-ping-info.py +++ b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-ping-info.py @@ -1,6 +1,12 @@ #!/usr/bin/env python +""" +Ping a list of services and show the result + +Usage: + dirac-ping-info [options] ... System ... -""" Ping a list of services and show the result +Arguments: + System: system name(mandatory) """ from __future__ import absolute_import from __future__ import division @@ -43,12 +49,6 @@ def main(): Script.registerSwitch("r", "showRaw", "show raw result from the query", cliParams.setRawResult) Script.registerSwitch("p:", "numPings=", "Number of pings to do (by default 1)", cliParams.setNumOfPingsToDo) - # Define a help message - Script.setUsageMessage('\n'.join([__doc__, - 'Usage:', - ' %s [option|cfgfile] +' % Script.scriptName, - ' Specifying a system is mandatory'])) - # Parse the command line and initialize DIRAC Script.parseCommandLine(ignoreErrors=False) diff --git a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-add-file.rst b/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-add-file.rst deleted file mode 100644 index c99d98ed0a5..00000000000 --- a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-add-file.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _dirac-dms-add-file: - -================== -dirac-dms-add-file -================== - -Upload a file to the grid storage and register it in the File Catalog - -Usage:: - - dirac-dms-add-file [option|cfgfile] ... LFN Path SE [GUID] - -Arguments:: - - LFN: Logical File Name - Path: Local path to the file - SE: DIRAC Storage Element - GUID: GUID to use in the registration (optional) - -**OR** - -Usage:: - - dirac-dms-add-file [option|cfgfile] ... LocalFile - -Arguments:: - - LocalFile: Path to local file containing all the above, i.e.:: - - lfn1 localfile1 SE [GUID1] - lfn2 localfile2 SE [GUID2] - -Options:: - - -f --force : Force overwrite of existing file - -Example:: - - $ dirac-dms-add-file LFN:/formation/user/v/vhamar/Example.txt Example.txt DIRAC-USER - {'Failed': {}, - 'Successful': {'/formationes/user/v/vhamar/Example.txt': {'put': 0.70791220664978027, - 'register': 0.61061787605285645}}} diff --git a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-catalog-metadata.rst b/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-catalog-metadata.rst deleted file mode 100644 index 1558c14d440..00000000000 --- a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-catalog-metadata.rst +++ /dev/null @@ -1,18 +0,0 @@ -.. _dirac-dms-catalog-metadata: - -========================== -dirac-dms-catalog-metadata -========================== - -Get metadata for the given file specified by its Logical File Name or for a list of files -contained in the specifed file - -Usage:: - - dirac-dms-catalog-metadata [Catalog] - -Example:: - - $ dirac-dms-catalog-metadata /formation/user/v/vhamar/Example.txt - FileName Size GUID Status Checksum - /formation/user/v/vhamar/Example.txt 34 EDE6DDA4-3344-3F39-A993-8349BA41EB23 1 eed20d47 diff --git a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-clean-directory.rst b/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-clean-directory.rst deleted file mode 100644 index 011414a5a31..00000000000 --- a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-clean-directory.rst +++ /dev/null @@ -1,18 +0,0 @@ -.. _dirac-dms-clean-directory: - -========================= -dirac-dms-clean-directory -========================= - -Clean the given directory or a list of directories by removing it and all the -contained files and subdirectories from the physical storage and from the -file catalogs. - -Usage:: - - dirac-dms-clean-directory - -Example:: - - $ dirac-dms-clean-directory /formation/user/v/vhamar/newDir - Cleaning directory /formation/user/v/vhamar/newDir ... OK diff --git a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-data-size.rst b/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-data-size.rst deleted file mode 100644 index 1856db396e0..00000000000 --- a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-data-size.rst +++ /dev/null @@ -1,24 +0,0 @@ -.. _dirac-dms-data-size: - -=================== -dirac-dms-data-size -=================== - -Get the size of the given file or a list of files - -Usage:: - - dirac-dms-data-size - -Options:: - - -u --Unit : Unit to use [default GB] (MB,GB,TB,PB) - -Example:: - - $ dirac-dms-data-size /formation/user/v/vhamar/Example.txt - ------------------------------ - Files | Size (GB) - ------------------------------ - 1 | 0.0 - ------------------------------ diff --git a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-filecatalog-cli.rst b/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-filecatalog-cli.rst deleted file mode 100644 index d93e8bb6c59..00000000000 --- a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-filecatalog-cli.rst +++ /dev/null @@ -1,34 +0,0 @@ -.. _dirac-dms-filecatalog-cli: - -========================= -dirac-dms-filecatalog-cli -========================= - -Launch the File Catalog shell - -Usage:: - - dirac-dms-filecatalog-cli [option] - -Options:: - - -f --file-catalog : Catalog client type to use (default FileCatalog) - -Example:: - - $ dirac-dms-filecatalog-cli - Starting DIRAC FileCatalog client - File Catalog Client $Revision: 1.17 $Date: - FC:/>help - - Documented commands (type help ): - ======================================== - add chmod find guid ls pwd replicate rmreplica user - cd chown get id meta register rm size - chgrp exit group lcd mkdir replicas rmdir unregister - - Undocumented commands: - ====================== - help - - FC:/> diff --git a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-find-lfns.rst b/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-find-lfns.rst deleted file mode 100644 index 48092d7eea7..00000000000 --- a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-find-lfns.rst +++ /dev/null @@ -1,24 +0,0 @@ -.. _dirac-dms-find-lfns: - -=================== -dirac-dms-find-lfns -=================== - -Find files in the FileCatalog using file metadata - -Usage:: - - dirac-dms-find-lfns [options] metaspec [metaspec ...] - -Arguments:: - - metaspec: metadata index specification (of the form: "meta=value" or "meta1000" "CreationDate<2015-05-15" - -Options:: - - --Path= : Path to search for - --SE= : (comma-separated list of) SEs/SE-groups to be searched diff --git a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-get-file.rst b/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-get-file.rst deleted file mode 100644 index e2c6c5cc58d..00000000000 --- a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-get-file.rst +++ /dev/null @@ -1,21 +0,0 @@ -.. _dirac-dms-get-file: - -================== -dirac-dms-get-file -================== - -Retrieve a single file or list of files from Grid storage to the current directory. - -Usage:: - - dirac-dms-get-file [option|cfgfile] ... LFN ... - -Arguments:: - - LFN: Logical File Name or file containing LFNs - -Example:: - - $ dirac-dms-get-file /formation/user/v/vhamar/Example.txt - {'Failed': {}, - 'Successful': {'/formation/user/v/vhamar/Example.txt': '/afs/in2p3.fr/home/h/hamar/Tests/DMS/Example.txt'}} diff --git a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-lfn-accessURL.rst b/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-lfn-accessURL.rst deleted file mode 100644 index 6da01b1f547..00000000000 --- a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-lfn-accessURL.rst +++ /dev/null @@ -1,23 +0,0 @@ -.. _dirac-dms-lfn-accessURL: - -======================= -dirac-dms-lfn-accessURL -======================= - -Retrieve an access URL for an LFN replica given a valid DIRAC SE. - -Usage:: - - dirac-dms-lfn-accessURL [option|cfgfile] ... LFN SE [PROTO] - -Arguments:: - - LFN: Logical File Name or file containing LFNs (mandatory) - SE: Valid DIRAC SE (mandatory) - PROTO: Optional protocol for accessURL - -Example:: - - $ dirac-dms-lfn-accessURL /formation/user/v/vhamar/Example.txt DIRAC-USER - {'Failed': {}, - 'Successful': {'/formation/user/v/vhamar/Example.txt': 'dips://dirac.in2p3.fr:9148/DataManagement/StorageElement /formation/user/v/vhamar/Example.txt'}} diff --git a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-lfn-metadata.rst b/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-lfn-metadata.rst deleted file mode 100644 index 17831cf0b2c..00000000000 --- a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-lfn-metadata.rst +++ /dev/null @@ -1,33 +0,0 @@ -.. _dirac-dms-lfn-metadata: - -====================== -dirac-dms-lfn-metadata -====================== - -Obtain replica metadata from file catalogue client. - -Usage:: - - dirac-dms-lfn-metadata [option|cfgfile] ... LFN ... - -Arguments:: - - LFN: Logical File Name or file containing LFNs - -Example:: - - $ dirac-dms-lfn-metadata /formation/user/v/vhamar/Example.txt - {'Failed': {}, - 'Successful': {'/formation/user/v/vhamar/Example.txt': {'Checksum': 'eed20d47', - 'ChecksumType': 'Adler32', - 'CreationDate': datetime.datetime(2011, 2, 11, 14, 52, 47), - 'FileID': 250L, - 'GID': 2, - 'GUID': 'EDE6DDA4-3344-3F39-A993-8349BA41EB23', - 'Mode': 509, - 'ModificationDate': datetime.datetime(2011, 2, 11, 14, 52, 47), - 'Owner': 'vhamar', - 'OwnerGroup': 'dirac_user', - 'Size': 34L, - 'Status': 1, - 'UID': 2}}} diff --git a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-lfn-replicas.rst b/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-lfn-replicas.rst deleted file mode 100644 index e2f175455a8..00000000000 --- a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-lfn-replicas.rst +++ /dev/null @@ -1,25 +0,0 @@ -.. _dirac-dms-lfn-replicas: - -====================== -dirac-dms-lfn-replicas -====================== - -Obtain replica information from file catalogue client. - -Usage:: - - dirac-dms-lfn-replicas [option|cfgfile] ... LFN ... - -Arguments:: - - LFN: Logical File Name or file containing LFNs - -Options:: - - -a --All : Also show inactive replicas - -Example:: - - $ dirac-dms-lfn-replicas /formation/user/v/vhamar/Test.txt - {'Failed': {}, - 'Successful': {'/formation/user/v/vhamar/Test.txt': {'M3PEC-disk': 'srm://se0.m3pec.u-bordeaux1.fr/dpm/m3pec.u-bordeaux1.fr/home/formation/user/v/vhamar/Test.txt'}}} diff --git a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-remove-catalog-files.rst b/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-remove-catalog-files.rst deleted file mode 100644 index 31c7affe1c8..00000000000 --- a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-remove-catalog-files.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _dirac-dms-remove-catalog-files: - -============================== -dirac-dms-remove-catalog-files -============================== - -Remove the given file or a list of files from the File Catalog - -Usage:: - - dirac-dms-remove-catalog-files - -Example:: - - $ dirac-dms-remove-catalog-files /formation/user/v/vhamar/1/1134/StdOut - Successfully removed 1 catalog files. diff --git a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-remove-files.rst b/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-remove-files.rst deleted file mode 100644 index d68d4bb6970..00000000000 --- a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-remove-files.rst +++ /dev/null @@ -1,15 +0,0 @@ -.. _dirac-dms-remove-files: - -====================== -dirac-dms-remove-files -====================== - -Remove the given file or a list of files from the File Catalog and from the storage - -Usage:: - - dirac-dms-remove-files - -Example:: - - $ dirac-dms-remove-files /formation/user/v/vhamar/Test.txt diff --git a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-remove-replicas.rst b/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-remove-replicas.rst deleted file mode 100644 index 6f70290dc6e..00000000000 --- a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-remove-replicas.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. _dirac-dms-remove-replicas: - -========================= -dirac-dms-remove-replicas -========================= - -Remove the given file replica or a list of file replicas from the File Catalog -and from the storage. - -Usage:: - - dirac-dms-remove-replicas SE [SE] - -Example:: - - $ dirac-dms-remove-replicas /formation/user/v/vhamar/Test.txt IBCP-disk - Successfully removed DIRAC-USER replica of /formation/user/v/vhamar/Test.txt diff --git a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-replicate-lfn.rst b/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-replicate-lfn.rst deleted file mode 100644 index b5f693a23a8..00000000000 --- a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-replicate-lfn.rst +++ /dev/null @@ -1,25 +0,0 @@ -.. _dirac-dms-replicate-lfn: - -======================= -dirac-dms-replicate-lfn -======================= - -Replicate an existing LFN to another Storage Element - -Usage:: - - dirac-dms-replicate-lfn [option|cfgfile] ... LFN Dest [Source [Cache]] - -Arguments:: - - LFN: Logical File Name or file containing LFNs (mandatory) - Dest: Valid DIRAC SE (mandatory) - Source: Valid DIRAC SE - Cache: Local directory to be used as cache - -Example:: - - $ dirac-dms-replicate-lfn /formation/user/v/vhamar/Test.txt DIRAC-USER - {'Failed': {}, - 'Successful': {'/formation/user/v/vhamar/Test.txt': {'register': 0.50833415985107422, - 'replicate': 11.878520965576172}}} diff --git a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-show-se-status.rst b/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-show-se-status.rst deleted file mode 100644 index 4b58ece43a8..00000000000 --- a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-show-se-status.rst +++ /dev/null @@ -1,28 +0,0 @@ -.. _dirac-dms-show-se-status: - -======================== -dirac-dms-show-se-status -======================== - -Get status of the available Storage Elements - -Usage:: - - dirac-dms-show-se-status [] - -Options:: - - -V --vo : Virtual Organization - -a --all : All Virtual Organizations flag - -n --noVO : No Virtual Organizations assigned flag - -Example:: - - $ dirac-dms-show-se-status - Storage Element Read Status Write Status - DIRAC-USER Active Active - IN2P3-disk Active Active - IPSL-IPGP-disk Active Active - IRES-disk InActive InActive - M3PEC-disk Active Active - ProductionSandboxSE Active Active diff --git a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-user-lfns.rst b/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-user-lfns.rst deleted file mode 100644 index e90927d33a3..00000000000 --- a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-user-lfns.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _dirac-dms-user-lfns: - -=================== -dirac-dms-user-lfns -=================== - -Get the list of all the user files. - -Usage:: - - dirac-dms-user-lfns [option|cfgfile] ... - -Options:: - - -D --Days : Match files older than number of days [0] - -M --Months : Match files older than number of months [0] - -Y --Years : Match files older than number of years [0] - -w --Wildcard : Wildcard for matching filenames [All] - -b --BaseDir : Base directory to begin search (default /[vo]/user/[initial]/[username]) - -e --EmptyDirs : Create a list of empty directories - -Example:: - - $ dirac-dms-user-lfns - /formation/user/v/vhamar: 14 files, 6 sub-directories - /formation/user/v/vhamar/newDir2: 0 files, 0 sub-directories - /formation/user/v/vhamar/testDir: 0 files, 0 sub-directories - /formation/user/v/vhamar/0: 0 files, 6 sub-directories - /formation/user/v/vhamar/test: 0 files, 0 sub-directories - /formation/user/v/vhamar/meta-test: 0 files, 0 sub-directories - /formation/user/v/vhamar/1: 0 files, 4 sub-directories - /formation/user/v/vhamar/0/994: 1 files, 0 sub-directories - /formation/user/v/vhamar/0/20: 1 files, 0 sub-directories - /formation/user/v/vhamar/0/998: 1 files, 0 sub-directories - /formation/user/v/vhamar/0/45: 1 files, 0 sub-directories - /formation/user/v/vhamar/0/16: 0 files, 0 sub-directories - /formation/user/v/vhamar/0/11: 1 files, 0 sub-directories - /formation/user/v/vhamar/1/1004: 1 files, 0 sub-directories - /formation/user/v/vhamar/1/1026: 1 files, 0 sub-directories - /formation/user/v/vhamar/1/1133: 1 files, 0 sub-directories - /formation/user/v/vhamar/1/1134: 0 files, 0 sub-directories - 22 matched files have been put in formation-user-v-vhamar.lfns diff --git a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-user-quota.rst b/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-user-quota.rst deleted file mode 100644 index cf0e0ecc497..00000000000 --- a/docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-user-quota.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _dirac-dms-user-quota: - -==================== -dirac-dms-user-quota -==================== - -Get the currently defined user data volume quotas - -Usage:: - - dirac-dms-user-quota [options] - -Example:: - - $ dirac-dms-user-quota - Current quota found to be 0.0 GB diff --git a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-get-normalized-queue-length.rst b/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-get-normalized-queue-length.rst deleted file mode 100644 index efa97b76cf0..00000000000 --- a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-get-normalized-queue-length.rst +++ /dev/null @@ -1,20 +0,0 @@ -.. _dirac-wms-get-normalized-queue-length: - -===================================== -dirac-wms-get-normalized-queue-length -===================================== - -Report Normalized CPU length of queue - -Usage:: - - dirac-wms-get-normalized-queue-length [option|cfgfile] ... Queue ... - -Arguments:: - - Queue: GlueCEUniqueID of the Queue (ie, juk.nikhef.nl:8443/cream-pbs-lhcb) - -Example:: - - $ dirac-wms-get-normalized-queue-length cclcgceli03.in2p3.fr:2119/jobmanager-bqs-long - cclcgceli03.in2p3.fr:2119/jobmanager-bqs-long 857400.0 diff --git a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-get-queue-normalization.rst b/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-get-queue-normalization.rst deleted file mode 100644 index 2e6c45c3db5..00000000000 --- a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-get-queue-normalization.rst +++ /dev/null @@ -1,20 +0,0 @@ -.. _dirac-wms-get-queue-normalization: - -================================= -dirac-wms-get-queue-normalization -================================= - -Report Normalization Factor applied by Site to the given Queue - -Usage:: - - dirac-wms-get-queue-normalization [option|cfgfile] ... Queue ... - -Arguments:: - - Queue: GlueCEUniqueID of the Queue (ie, juk.nikhef.nl:8443/cream-pbs-lhcb) - -Example:: - - $ dirac-wms-get-queue-normalization cclcgceli03.in2p3.fr:2119/jobmanager-bqs-long - cclcgceli03.in2p3.fr:2119/jobmanager-bqs-long 2500.0 diff --git a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-attributes.rst b/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-attributes.rst deleted file mode 100644 index 281ac26d007..00000000000 --- a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-attributes.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. _dirac-wms-job-attributes: - -======================== -dirac-wms-job-attributes -======================== - -Retrieve attributes associated with the given DIRAC job - -Usage:: - - dirac-wms-job-attributes [option|cfgfile] ... JobID ... - -Arguments:: - - JobID: DIRAC Job ID - -Example:: - - $ dirac-wms-job-attributes 1 - {'AccountedFlag': 'False', - 'ApplicationNumStatus': '0', - 'ApplicationStatus': 'Unknown', - 'CPUTime': '0.0', - 'DIRACSetup': 'EELA-Production', - 'DeletedFlag': 'False', - 'EndExecTime': '2011-02-14 11:28:01', - 'FailedFlag': 'False', - 'HeartBeatTime': '2011-02-14 11:28:01', - 'ISandboxReadyFlag': 'False', - 'JobGroup': 'NoGroup', - 'JobID': '1', - 'JobName': 'DIRAC_vhamar_602138', - 'JobSplitType': 'Single', - 'JobType': 'normal', - 'KilledFlag': 'False', - 'LastUpdateTime': '2011-02-14 11:28:11', - 'MasterJobID': '0', - 'MinorStatus': 'Execution Complete', - 'OSandboxReadyFlag': 'False', - 'Owner': 'vhamar', - 'OwnerDN': '/O=GRID-FR/C=FR/O=CNRS/OU=CPPM/CN=Vanessa Hamar', - 'OwnerGroup': 'eela_user', - 'RescheduleCounter': '0', - 'RescheduleTime': 'None', - 'RetrievedFlag': 'False', - 'RunNumber': '0', - 'Site': 'EELA.UTFSM.cl', - 'StartExecTime': '2011-02-14 11:27:48', - 'Status': 'Done', - 'SubmissionTime': '2011-02-14 10:12:40', - 'SystemPriority': '0', - 'UserPriority': '1', - 'VerifiedFlag': 'True'} diff --git a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-delete.rst b/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-delete.rst deleted file mode 100644 index 6aaf5ba7b0c..00000000000 --- a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-delete.rst +++ /dev/null @@ -1,26 +0,0 @@ -.. _dirac-wms-job-delete: - -==================== -dirac-wms-job-delete -==================== - -Delete DIRAC job from WMS, if running it will be killed - -Usage:: - - dirac-wms-job-delete [option|cfgfile] ... JobID ... - -Arguments:: - - JobID: DIRAC Job ID - -Options:: - - -f --File : Get output for jobs with IDs from the file - -g --JobGroup : Get output for jobs in the given group - -Example:: - - - $ dirac-wms-job-delete 12 - Deleted job 12 diff --git a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-get-input.rst b/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-get-input.rst deleted file mode 100644 index dc1ab73122a..00000000000 --- a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-get-input.rst +++ /dev/null @@ -1,24 +0,0 @@ -.. _dirac-wms-job-get-input: - -======================= -dirac-wms-job-get-input -======================= - -Retrieve input sandbox for DIRAC Job - -Usage:: - - dirac-wms-job-get-input [option|cfgfile] ... JobID ... - -Arguments:: - - JobID: DIRAC Job ID - -Options:: - - -D --Dir : Store the output in this directory - -Example:: - - $ dirac-wms-job-get-input 13 - Job input sandbox retrieved in InputSandbox13/ diff --git a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-get-jdl.rst b/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-get-jdl.rst deleted file mode 100644 index be2dcfe0062..00000000000 --- a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-get-jdl.rst +++ /dev/null @@ -1,36 +0,0 @@ -.. _dirac-wms-job-get-jdl: - -===================== -dirac-wms-job-get-jdl -===================== - -Retrieve the current JDL of a DIRAC job - -Usage:: - - dirac-wms-job-get-jdl [option|cfgfile] ... JobID ... - -Arguments:: - - JobID: DIRAC Job ID - -Options:: - - -O --Original : Gets the original JDL - -Example:: - - $ dirac-wms-job-get-jdl 1 - {'Arguments': '-ltrA', - 'CPUTime': '86400', - 'DIRACSetup': 'EELA-Production', - 'Executable': '/bin/ls', - 'JobID': '1', - 'JobName': 'DIRAC_vhamar_602138', - 'JobRequirements': '[ OwnerDN = /O=GRID-FR/C=FR/O=CNRS/OU=CPPM/CN=Vanessa Hamar; OwnerGroup = eela_user; Setup = EELA-Production; UserPriority = 1; CPUTime = 0 ]', - 'OutputSandbox': ['std.out', 'std.err'], - 'Owner': 'vhamar', - 'OwnerDN': '/O=GRID-FR/C=FR/O=CNRS/OU=CPPM/CN=Vanessa Hamar', - 'OwnerGroup': 'eela_user', - 'OwnerName': 'vhamar', - 'Priority': '1'} diff --git a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-get-output.rst b/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-get-output.rst deleted file mode 100644 index e90543eb6d5..00000000000 --- a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-get-output.rst +++ /dev/null @@ -1,26 +0,0 @@ -.. _dirac-wms-job-get-output: - -======================== -dirac-wms-job-get-output -======================== - -Retrieve output sandbox for a DIRAC job - -Usage:: - - dirac-wms-job-get-output [option|cfgfile] ... JobID ... - -Arguments:: - - JobID: DIRAC Job ID or a name of the file with JobID per line - -Options:: - - -D --Dir : Store the output in this directory - -f --File : Get output for jobs with IDs from the file - -g --JobGroup : Get output for jobs in the given group - -Example:: - - $ dirac-wms-job-get-output 1 - Job output sandbox retrieved in 1/ diff --git a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-kill.rst b/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-kill.rst deleted file mode 100644 index 69ff8e29bb3..00000000000 --- a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-kill.rst +++ /dev/null @@ -1,32 +0,0 @@ -.. _dirac-wms-job-kill: - -================== -dirac-wms-job-kill -================== - -Issue a kill signal to a running DIRAC job - -Usage:: - - dirac-wms-job-kill [option|cfgfile] ... JobID ... - -Arguments:: - - JobID: DIRAC Job ID - -Example:: - - $ dirac-wms-job-kill 1918 - Killed job 1918 - -.. Note:: - - - jobs will not disappear from JobDB until JobCleaningAgent has deleted them - - jobs will be deleted "immediately" if they are in the status 'Deleted' - - USER jobs will be deleted after a grace period if they are in status Killed, Failed, Done - - What happens when you hit the "kill job" button - - - if the job is in status 'Running', 'Matched', 'Stalled' it will be properly killed, and then its - status will be marked as 'Killed' - - otherwise, it will be marked directly as 'Killed'. diff --git a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-logging-info.rst b/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-logging-info.rst deleted file mode 100644 index e98fa5d2974..00000000000 --- a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-logging-info.rst +++ /dev/null @@ -1,34 +0,0 @@ -.. _dirac-wms-job-logging-info: - -========================== -dirac-wms-job-logging-info -========================== - -Retrieve history of transitions for a DIRAC job - -Usage:: - - dirac-wms-job-logging-info [option|cfgfile] ... JobID ... - -Arguments:: - - JobID: DIRAC Job ID - -Example:: - - $ dirac-wms-job-logging-info 1 - Status MinorStatus ApplicationStatus DateTime - Received Job accepted Unknown 2011-02-14 10:12:40 - Received False Unknown 2011-02-14 11:03:12 - Checking JobSanity Unknown 2011-02-14 11:03:12 - Checking JobScheduling Unknown 2011-02-14 11:03:12 - Waiting Pilot Agent Submission Unknown 2011-02-14 11:03:12 - Matched Assigned Unknown 2011-02-14 11:27:17 - Matched Job Received by Agent Unknown 2011-02-14 11:27:27 - Matched Submitted To CE Unknown 2011-02-14 11:27:38 - Running Job Initialization Unknown 2011-02-14 11:27:42 - Running Application Unknown 2011-02-14 11:27:48 - Completed Application Finished Successfully Unknown 2011-02-14 11:28:01 - Completed Uploading Output Sandbox Unknown 2011-02-14 11:28:04 - Completed Output Sandbox Uploaded Unknown 2011-02-14 11:28:07 - Done Execution Complete Unknown 2011-02-14 11:28:07 diff --git a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-parameters.rst b/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-parameters.rst deleted file mode 100644 index 5322843810b..00000000000 --- a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-parameters.rst +++ /dev/null @@ -1,42 +0,0 @@ -.. _dirac-wms-job-parameters: - -======================== -dirac-wms-job-parameters -======================== - -Retrieve parameters associated to the given DIRAC job - -Usage:: - - dirac-wms-job-parameters [option|cfgfile] ... JobID ... - -Arguments:: - - JobID: DIRAC Job ID - -Example:: - - $ dirac-wms-job-parameters 1 - {'CPU(MHz)': '1596.479', - 'CPUNormalizationFactor': '6.8', - 'CPUScalingFactor': '6.8', - 'CacheSize(kB)': '4096KB', - 'GridCEQueue': 'ce.labmc.inf.utfsm.cl:2119/jobmanager-lcgpbs-prod', - 'HostName': 'wn05.labmc', - 'JobPath': 'JobPath,JobSanity,JobScheduling,TaskQueue', - 'JobSanityCheck': 'Job: 1 JDL: OK,InputData: No input LFNs, Input Sandboxes: 0, OK.', - 'JobWrapperPID': '599', - 'LocalAccount': 'prod006', - 'LocalBatchID': '', - 'LocalJobID': '277821.ce.labmc.inf.utfsm.cl', - 'MatcherServiceTime': '2.27646398544', - 'Memory(kB)': '858540kB', - 'ModelName': 'Intel(R)Xeon(R)CPU5110@1.60GHz', - 'NormCPUTime(s)': '1.02', - 'OK': 'True', - 'OutputSandboxMissingFiles': 'std.err', - 'PayloadPID': '604', - 'PilotAgent': 'EELADIRAC v1r1; DIRAC v5r12', - 'Pilot_Reference': 'https://lb2.eela.ufrj.br:9000/ktM6WWR1GdkOTm98_hwM9Q', - 'ScaledCPUTime': '115.6', - 'TotalCPUTime(s)': '0.15'} diff --git a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-peek.rst b/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-peek.rst deleted file mode 100644 index 22053bb2d5b..00000000000 --- a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-peek.rst +++ /dev/null @@ -1,19 +0,0 @@ -.. _dirac-wms-job-peek: - -================== -dirac-wms-job-peek -================== - -Peek StdOut of the given DIRAC job - -Usage:: - - dirac-wms-job-peek [option|cfgfile] ... JobID ... - -Arguments:: - - JobID: DIRAC Job ID - -Example:: - - $ dirac-wms-job-peek 1 diff --git a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-reschedule.rst b/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-reschedule.rst deleted file mode 100644 index ab7888a9d2f..00000000000 --- a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-reschedule.rst +++ /dev/null @@ -1,20 +0,0 @@ -.. _dirac-wms-job-reschedule: - -======================== -dirac-wms-job-reschedule -======================== - -Reschedule the given DIRAC job - -Usage:: - - dirac-wms-job-reschedule [option|cfgfile] ... JobID ... - -Arguments:: - - JobID: DIRAC Job ID - -Example:: - - $ dirac-wms-job-reschedule 1 - Rescheduled job 1 diff --git a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-status.rst b/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-status.rst deleted file mode 100644 index 7f89b6cb16f..00000000000 --- a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-status.rst +++ /dev/null @@ -1,25 +0,0 @@ -.. _dirac-wms-job-status: - -==================== -dirac-wms-job-status -==================== - -Retrieve status of the given DIRAC job - -Usage:: - - dirac-wms-job-status [option|cfgfile] ... JobID ... - -Arguments:: - - JobID: DIRAC Job ID - -Options:: - - -f --File : Get status for jobs with IDs from the file - -g --JobGroup : Get status for jobs in the given group - -Example:: - - $ dirac-wms-job-status 2 - JobID=2 Status=Done; MinorStatus=Execution Complete; Site=EELA.UTFSM.cl; diff --git a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-submit.rst b/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-submit.rst deleted file mode 100644 index d077b1b92c8..00000000000 --- a/docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-submit.rst +++ /dev/null @@ -1,25 +0,0 @@ -.. _dirac-wms-job-submit: - -==================== -dirac-wms-job-submit -==================== - -Submit jobs to DIRAC WMS - -Usage:: - - dirac-wms-job-submit [option|cfgfile] ... JDL ... - -Arguments:: - - JDL: Path to JDL file - -Options:: - - -f --File : Writes job ids to file - -r --UseJobRepo : Use the job repository - -Example:: - - $ dirac-wms-job-submit Simple.jdl - JobID = 11 diff --git a/src/DIRAC/AccountingSystem/Client/ReportCLI.py b/src/DIRAC/AccountingSystem/Client/ReportCLI.py index fe29abc1af4..ade6f59b876 100644 --- a/src/DIRAC/AccountingSystem/Client/ReportCLI.py +++ b/src/DIRAC/AccountingSystem/Client/ReportCLI.py @@ -7,10 +7,7 @@ from DIRAC.Core.Base import Script -Script.localCfg.addDefaultEntry( "LogLevel", "info" ) -Script.setUsageMessage('\n'.join( [ __doc__.split( '\n' )[1], - 'Usage:', - ' %s [option|cfgfile] ...' % Script.scriptName, ] ) ) +Script.localCfg.addDefaultEntry("LogLevel", "info") Script.parseCommandLine() from DIRAC.AccountingSystem.Client.ReportCLI import ReportCLI diff --git a/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py b/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py index 08892fd1aa0..7f8aa7329d0 100755 --- a/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py +++ b/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py @@ -4,17 +4,25 @@ # Author : Adria Casajus ######################################################################## """ - Decode Accounting plot URLs +Decode Accounting plot URLs + +Usage: + dirac-accounting-decode-fileid [options] ... URL ... + +Arguments: + URL: encoded URL of a DIRAC Accounting plot """ from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" -import pprint import sys -from six.moves.urllib import parse as urlparse import cgi +import pprint +from six.moves.urllib import parse as urlparse + from DIRAC import gLogger from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -23,12 +31,6 @@ @DIRACScript() def main(): from DIRAC.Core.Utilities.Plotting.FileCoding import extractRequestFromFileId - - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... URL ...' % Script.scriptName, - 'Arguments:', - ' URL: encoded URL of a DIRAC Accounting plot'])) Script.parseCommandLine() fileIds = Script.getPositionalArgs() diff --git a/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py b/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py index 20a01357912..b4ee6114a87 100755 --- a/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py +++ b/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py @@ -4,11 +4,15 @@ # Author : Adria Casajus ######################################################################## """ - Command line administrative interface to DIRAC Accounting DataStore Service +Command line administrative interface to DIRAC Accounting DataStore Service + +Usage: + dirac-admin-accounting-cli [options] ... """ from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" from DIRAC.Core.Base import Script @@ -18,9 +22,6 @@ @DIRACScript() def main(): Script.localCfg.addDefaultEntry("LogLevel", "info") - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ...' % Script.scriptName, ])) Script.parseCommandLine() from DIRAC.AccountingSystem.Client.AccountingCLI import AccountingCLI diff --git a/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py b/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py index a85d890fd65..267e18acb86 100755 --- a/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py +++ b/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py @@ -1,4 +1,4 @@ -""" This is the guy that parses and interprets the local configuration options +""" This is the guy that parses and interprets the local configuration options. """ from __future__ import absolute_import from __future__ import division @@ -6,8 +6,9 @@ __RCSID__ = "$Id$" -import sys +import re import os +import sys import getopt import DIRAC @@ -46,7 +47,10 @@ def __init__(self, defaultSectionPath=""): self.componentType = False self.loggingSection = "/DIRAC" self.initialized = False - self.__usageMessage = '' + self.__scriptDescription = '' + self.__helpUsageDoc = '' + self.__helpArgumentsDoc = '' + self.__helpExampleDoc = '' self.__debugMode = 0 self.firstOptionIndex = 1 @@ -83,10 +87,33 @@ def addCFGFile(self, filePath): self.additionalCFGFiles.append(filePath) def setUsageMessage(self, usageMsg): - """ - Define message to be display by the showHelp method - """ - self.__usageMessage = usageMsg + """ Define and parse message to be display by the showHelp method. + + :param str usageMsg: script description that can contain Usage, Example, Arguments, Options blocks + """ + # Searched text + context = r"(.*?)" + # Start of any block description or end of __doc__ + startAnyBlockOrEnd = r"(?:\n(?:Usage|Example|Arguments|Options):+\n|$)" + + r = r"%s%s" % (context, startAnyBlockOrEnd) + if usageMsg: + # The description block is the first in the __doc__ + desc = re.search(r, usageMsg, re.DOTALL) + if desc: + self.__scriptDescription = '\n' + desc.group(1).strip('\n') + '\n' + # The usage block starts with '\nUsage:\n' or '\nUsage::\n' + usage = re.search(r"%s%s" % (r"Usage:+", r), usageMsg, re.DOTALL) + if usage: + self.__helpUsageDoc = '\nUsage:\n' + usage.group(1).strip('\n') + '\n' + # The argument block starts with '\Arguments:\n' or '\Arguments::\n' + args = re.search(r"%s%s" % (r"Arguments:+", r), usageMsg, re.DOTALL) + if args: + self.__helpArgumentsDoc = '\nArguments:\n' + args.group(1).strip('\n') + '\n' + # The example block starts with '\Example:\n' or '\Example::\n' + expl = re.search(r"%s%s" % (r"Example:+", r), usageMsg, re.DOTALL) + if expl: + self.__helpExampleDoc = '\nExample:\n' + expl.group(1).strip('\n') + '\n' def __setOptionValue(self, optionPath, value): gConfigurationData.setOptionInCFG(self.__getAbsolutePath(optionPath), @@ -510,11 +537,14 @@ def showHelp(self, dummy=False, exitCode=0): """ Printout help message including a Usage message if defined via setUsageMessage method """ - if self.__usageMessage: - gLogger.notice('\n' + self.__usageMessage.lstrip()) + if self.__scriptDescription: + gLogger.notice(self.__scriptDescription) + + if self.__helpUsageDoc: + gLogger.notice(self.__helpUsageDoc) else: gLogger.notice("\nUsage:") - gLogger.notice("\n %s (|)*" % os.path.basename(sys.argv[0])) + gLogger.notice("\n %s [options] ..." % os.path.basename(sys.argv[0])) if dummy: gLogger.notice(dummy) @@ -534,7 +564,7 @@ def showHelp(self, dummy=False, exitCode=0): # Last general opt is always help break if iLastOpt + 1 < len(self.commandOptionList): - gLogger.notice(" \nOptions:") + gLogger.notice("\nOptions:") for iPos in range(iLastOpt + 1, len(self.commandOptionList)): optionTuple = self.commandOptionList[iPos] if optionTuple[0].endswith(':'): @@ -545,6 +575,12 @@ def showHelp(self, dummy=False, exitCode=0): else: gLogger.notice(" -%s --%s : %s" % (optionTuple[0].ljust(2), optionTuple[1].ljust(22), optionTuple[2])) + if self.__helpArgumentsDoc: + gLogger.notice(self.__helpArgumentsDoc) + + if self.__helpExampleDoc: + gLogger.notice(self.__helpExampleDoc) + gLogger.notice("") DIRAC.exit(exitCode) diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py index 5f7fe0107ac..6307bc01b6c 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py @@ -4,7 +4,7 @@ # Author : Andrei Tsaregorodtsev ######################################################################## """ - Add resources from the BDII database for a given VO +Add resources from the BDII database for a given VO """ from __future__ import absolute_import from __future__ import division @@ -36,10 +36,6 @@ def processScriptSwitches(): Script.registerSwitch("H:", "host=", "use this url for information querying") Script.registerSwitch("G", "glue2", "DEPRECATED: query GLUE2 information schema") Script.registerSwitch("g", "glue1", "query GLUE1 information schema") - - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile]' % Script.scriptName])) Script.parseCommandLine(ignoreErrors=True) vo = '' diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py index 59fa8c6d731..9c1c2989d8b 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py @@ -3,7 +3,16 @@ # File : dirac-admin-add-shifter # Author : Federico Stagni ######################################################################## -""" Adds or modify a shifter, in the operations section of the CS +""" +Adds or modify a shifter, in the operations section of the CS + +Usage: + dirac-admin-add-shifter [options] ... ShifterRole UserName DIRACGroup ... + +Arguments: + ShifterRole: Name of the shifter role, e.g. DataManager + UserName: A user name, as registered in Registry section + DIRACGroup: DIRAC Group, e.g. diracAdmin (the user has to have this role) """ from __future__ import absolute_import from __future__ import division @@ -18,13 +27,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... ShifterRole UserName DIRACGroup ...' % Script.scriptName, - 'Arguments:', - ' ShifterRole: Name of the shifter role, e.g. DataManager', - ' UserName: A user name, as registered in Registry section', - ' DIRACGroup: DIRAC Group, e.g. diracAdmin (the user has to have this role)'])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py index d6e7ed85fc5..d82e2d7862f 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py @@ -4,9 +4,20 @@ # Author : Federico Stagni ######################################################################## """ - Add a new DIRAC SiteName to DIRAC Configuration, including one or more CEs. - If site is already in the CS with another name, error message will be produced. - If site is already in the CS with the right name, only new CEs will be added. +Add a new DIRAC SiteName to DIRAC Configuration, including one or more CEs. +If site is already in the CS with another name, error message will be produced. +If site is already in the CS with the right name, only new CEs will be added. + +Usage: + dirac-admin-add-site [options] ... DIRACSiteName GridSiteName CE [CE] ... + +Arguments: + DIRACSiteName: Name of the site for DIRAC in the form GRID.LOCATION.COUNTRY (ie:LCG.CERN.ch) + GridSiteName: Name of the site in the Grid (ie: CERN-PROD) + CE: Name of the CE to be included in the site (ie: ce111.cern.ch) + +Example: + $ dirac-admin-add-site LCG.IN2P3.fr IN2P3-Site """ from __future__ import absolute_import from __future__ import division @@ -22,17 +33,6 @@ @DIRACScript() def main(): - Script.setUsageMessage( - '\n'.join( - [ - __doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... DIRACSiteName GridSiteName CE [CE] ...' % - Script.scriptName, - 'Arguments:', - ' DIRACSiteName: Name of the site for DIRAC in the form GRID.LOCATION.COUNTRY (ie:LCG.CERN.ch)', - ' GridSiteName: Name of the site in the Grid (ie: CERN-PROD)', - ' CE: Name of the CE to be included in the site (ie: ce111.cern.ch)'])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py index cb65a3d167c..810ee551eb3 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py @@ -4,7 +4,15 @@ # Author : Aresh Vedaee ######################################################################## """ - Check info on BDII for a given CE or site +Check info on BDII for a given CE or site + +Usage: + dirac-admin-bdii-info [options] ... + +Arguments: + Site: Name of the Site (i.e. CERN-PROD) + CE: Name of the CE (i.e. cccreamceli05.in2p3.fr) + info: Accepted values (ce|ce-state|ce-cluster|ce-vo|site) """ from __future__ import print_function from __future__ import absolute_import @@ -27,13 +35,6 @@ def registerSwitches(): Script.registerSwitch("H:", "host=", "BDII host") Script.registerSwitch("V:", "vo=", "vo") - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... ' % Script.scriptName, - 'Arguments:', - ' Site: Name of the Site (i.e. CERN-PROD)', - ' CE: Name of the CE (i.e. cccreamceli05.in2p3.fr)', - ' info: Accepted values (ce|ce-state|ce-cluster|ce-vo|site)'])) def parseSwitches(): diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_check_config_options.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_check_config_options.py index 53b9f5fc011..8b0676c4564 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_check_config_options.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_check_config_options.py @@ -1,5 +1,6 @@ #!/usr/bin/env python -"""Check configuration options against the defaults in the ConfigTemplate.cfg files. +""" +Check configuration options against the defaults in the ConfigTemplate.cfg files. This script can help to discover discrepancies in the configuration: @@ -9,6 +10,8 @@ This script should be run by dirac administrators after major updates. +Usage: + dirac-admin-check-config-options [options] -[MAUO] [-S ] """ from __future__ import absolute_import from __future__ import division @@ -67,9 +70,6 @@ def _setSwitches(self): Script.registerSwitch("O", "missingOption", "Show options which do not exist in the current configuration", self._setShowMissingOptions) - Script.setUsageMessage('\n'.join([self.__doc__, - 'Usage:', - ' %s [option|cfgfile] -[MAUO] [-S - Argument: - Name of the subsection in the CS '/Resources/Sites/' section to be sorted (i.e. LCG, DIRAC) +Arguments: + Section: Name of the subsection in '/Resources/Sites/' for sort (i.e. LCG DIRAC) - Example: dirac-admin-sort-cs-sites -C DIRAC - Sort sites in subsection /Resources/Sites/DIRAC by country postfix +Example: + $ dirac-admin-sort-cs-sites -C CLOUDS DIRAC + sort site names by country postfix in '/Resources/Sites/CLOUDS' and '/Resources/Sites/DIRAC' subsection """ from __future__ import absolute_import from __future__ import division @@ -62,19 +62,6 @@ def main(): sortBy) Script.registerSwitch("R", "reverse", "Reverse the sort order", isReverse) - Script.setUsageMessage("\n".join([ - __doc__.split("\n")[1], - "Usage:", - " %s [option|cfgfile]
" % - Script.scriptName, - "Optional arguments:", - " Section: Name of the subsection in '/Resources/Sites/' for sort (i.e. LCG DIRAC)", - "Example:", - " dirac-admin-sort-cs-sites -C CLOUDS DIRAC", - " sort site names by country postfix in '/Resources/Sites/CLOUDS' and '/Resources/Sites/DIRAC' subsection", - "" - ])) - Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py index c7b2aeeadf6..f94311a2692 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py @@ -4,7 +4,7 @@ # Author : Andrei Tsaregorodtsev ######################################################################## """ - Synchronize VOMS user data with the DIRAC Registry +Synchronize VOMS user data with the DIRAC Registry """ from __future__ import absolute_import from __future__ import division @@ -40,12 +40,6 @@ def setVO(value): def main(): Script.registerSwitch("V:", "vo=", "VO name", setVO) Script.registerSwitch("D", "dryRun", "Dry run", setDryRun) - Script.setUsageMessage('\n'.join([ - __doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ...' % Script.scriptName - ])) - Script.parseCommandLine(ignoreErrors=True) @executeWithUserProxy diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py index 6641f2e44a2..b6af569a339 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py @@ -4,11 +4,12 @@ # Author : Adria Casajus ######################################################################## """ - Command line interface to DIRAC Configuration Server +Command line interface to DIRAC Configuration Server """ from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" from DIRAC.Core.Base import Script @@ -19,11 +20,6 @@ @DIRACScript() def main(): Script.localCfg.addDefaultEntry("LogLevel", "fatal") - Script.setUsageMessage('\n'.join([ - __doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ...' % Script.scriptName, - ])) Script.parseCommandLine() CSCLI().start() diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_dump_local_cache.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_dump_local_cache.py index 33e6f80caf2..879fe8123a4 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_dump_local_cache.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_dump_local_cache.py @@ -1,10 +1,10 @@ #!/usr/bin/env python ######################################################################## -# File : dirac-configuration-cli +# File : dirac-configuration-dump-local-cache # Author : Adria Casajus ######################################################################## """ - Dump DIRAC Configuration data +Dump DIRAC Configuration data """ from __future__ import print_function from __future__ import absolute_import @@ -38,9 +38,6 @@ def setRaw(args): Script.registerSwitch("f:", "file=", "Dump Configuration data into ", setFilename) Script.registerSwitch("r", "raw", "Do not make any modification to the data", setRaw) - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ...' % Script.scriptName, ])) Script.parseCommandLine() from DIRAC import gConfig, gLogger diff --git a/src/DIRAC/Core/Base/Script.py b/src/DIRAC/Core/Base/Script.py index 04edc7b48da..f32535b8372 100755 --- a/src/DIRAC/Core/Base/Script.py +++ b/src/DIRAC/Core/Base/Script.py @@ -19,6 +19,7 @@ localCfg = LocalConfiguration() +doc = inspect.currentframe().f_back.f_globals['__doc__'] caller = inspect.currentframe().f_back.f_globals['__name__'] @@ -50,6 +51,8 @@ scriptName = os.path.basename(sys.argv[i].split('::')[0]).replace('.py', '') # The first argument DIRAC should parse is the next one localCfg.firstOptionIndex = i + 1 +# Read and parse the script __doc__ to create a draft help message +localCfg.setUsageMessage(doc) gIsAlreadyInitialized = False diff --git a/src/DIRAC/Core/scripts/dirac_agent.py b/src/DIRAC/Core/scripts/dirac_agent.py index e449967ed6c..fed8ed6f1b1 100755 --- a/src/DIRAC/Core/scripts/dirac_agent.py +++ b/src/DIRAC/Core/scripts/dirac_agent.py @@ -3,25 +3,28 @@ # File : dirac-agent # Author : Adria Casajus, Andrei Tsaregorodtsev, Stuart Paterson ######################################################################## +""" +This is a script to launch DIRAC agents. Mostly internal. +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function -__RCSID__ = "$Id$" -""" This is a script to launch DIRAC agents -""" +__RCSID__ = "$Id$" import sys -from DIRAC.ConfigurationSystem.Client.LocalConfiguration import LocalConfiguration + from DIRAC import gLogger from DIRAC.Core.Base.AgentReactor import AgentReactor from DIRAC.Core.Utilities.DErrno import includeExtensionErrors from DIRAC.Core.Utilities.DIRACScript import DIRACScript +from DIRAC.ConfigurationSystem.Client.LocalConfiguration import LocalConfiguration @DIRACScript() def main(): localCfg = LocalConfiguration() + localCfg.setUsageMessage(__doc__) positionalArgs = localCfg.getPositionalArguments() if len(positionalArgs) == 0: diff --git a/src/DIRAC/Core/scripts/dirac_configure.py b/src/DIRAC/Core/scripts/dirac_configure.py index e87350e4590..50a768373b3 100755 --- a/src/DIRAC/Core/scripts/dirac_configure.py +++ b/src/DIRAC/Core/scripts/dirac_configure.py @@ -282,7 +282,7 @@ def main(): Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], '\nUsage:', - ' %s [option|cfgfile] ...\n' % Script.scriptName])) + ' %s [options] ...\n' % Script.scriptName])) Script.parseCommandLine(ignoreErrors=True) args = Script.getExtraCLICFGFiles() diff --git a/src/DIRAC/Core/scripts/dirac_deploy_scripts.py b/src/DIRAC/Core/scripts/dirac_deploy_scripts.py index 0c1af6cf6d8..62faa336227 100755 --- a/src/DIRAC/Core/scripts/dirac_deploy_scripts.py +++ b/src/DIRAC/Core/scripts/dirac_deploy_scripts.py @@ -3,16 +3,14 @@ Deploy all scripts and extensions. This script is not meant to be called by users (it's automatically called by dirac-install). -Usage:: +Usage: + dirac-deploy-scripts [options] ... ... - dirac-deploy-scripts (|)* ... - -Arguments:: +Arguments: python path: you can specify the folder where your python installation should be fetched from to replace the shebang -Example:: - +Example: $ dirac-deploy-scripts """ from __future__ import print_function diff --git a/src/DIRAC/Core/scripts/dirac_executor.py b/src/DIRAC/Core/scripts/dirac_executor.py index d9a2970b24f..bcfc9d00b10 100755 --- a/src/DIRAC/Core/scripts/dirac_executor.py +++ b/src/DIRAC/Core/scripts/dirac_executor.py @@ -3,25 +3,27 @@ # File : dirac-executor # Author : Adria Casajus ######################################################################## +""" +This is a script to launch DIRAC executors +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function -__RCSID__ = "$Id$" -""" This is a script to launch DIRAC executors -""" +__RCSID__ = "$Id$" import sys -from DIRAC.ConfigurationSystem.Client.LocalConfiguration import LocalConfiguration + from DIRAC import gLogger from DIRAC.Core.Base.ExecutorReactor import ExecutorReactor from DIRAC.Core.Utilities.DErrno import includeExtensionErrors from DIRAC.Core.Utilities.DIRACScript import DIRACScript - +from DIRAC.ConfigurationSystem.Client.LocalConfiguration import LocalConfiguration @DIRACScript() def main(): localCfg = LocalConfiguration() + localCfg.setUsageMessage(__doc__) positionalArgs = localCfg.getPositionalArguments() if len(positionalArgs) == 0: diff --git a/src/DIRAC/Core/scripts/dirac_info.py b/src/DIRAC/Core/scripts/dirac_info.py index 745ba252afc..eb8b31cdf6b 100755 --- a/src/DIRAC/Core/scripts/dirac_info.py +++ b/src/DIRAC/Core/scripts/dirac_info.py @@ -4,7 +4,24 @@ # Author : Andrei Tsaregorodtsev ######################################################################## """ - Report info about local DIRAC installation +Report info about local DIRAC installation + +Example: + $ dirac-info + + Option Value + ============================ + Setup Dirac-Production + ConfigurationServer dips://ccdiracli08.in2p3.fr:9135/Configuration/Server + Installation path /opt/dirac/versions/v7r2-pre33_1613239204 + Installation type client + Platform Linux_x86_64_glibc-2.17 + VirtualOrganization dteam + User DN /DC=org/DC=ugrid/O=people/O=BITP/CN=Andrii Lytovchenko + Proxy validity, secs 0 + Use Server Certificate Yes + Skip CA Checks No + DIRAC version v7r2-pre33 """ from __future__ import print_function @@ -27,11 +44,19 @@ def main(): from DIRAC.ConfigurationSystem.Client.Helpers.Registry import getVOForGroup from DIRAC.Core.Utilities.PrettyPrint import printTable - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... Site' % Script.scriptName, ])) + def version(arg): + Script.disableCS() + print(DIRAC.version) + DIRAC.exit(0) + + def platform(arg): + Script.disableCS() + print(DIRAC.getPlatform()) + DIRAC.exit(0) + + Script.registerSwitch("v", "version", "print version of current DIRAC installation", version) + Script.registerSwitch("p", "platform", "print platform of current DIRAC installation", platform) Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() records = [] diff --git a/src/DIRAC/Core/scripts/dirac_install_db.py b/src/DIRAC/Core/scripts/dirac_install_db.py index 0778e809c4f..519a2763b10 100755 --- a/src/DIRAC/Core/scripts/dirac_install_db.py +++ b/src/DIRAC/Core/scripts/dirac_install_db.py @@ -1,22 +1,26 @@ #!/usr/bin/env python """ Create a new DB in the MySQL server + +Usage: + dirac-install-db [options] ... DB ... + +Arguments: + DB: Name of the Database (mandatory) """ # Script initialization and parseCommandLine from __future__ import print_function from __future__ import absolute_import from __future__ import division + +__RCSID__ = "$Id$" + from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgFile] ... DB ...' % Script.scriptName, - 'Arguments:', - ' DB: Name of the Database (mandatory)'])) Script.parseCommandLine() args = Script.getPositionalArgs() if len(args) < 1: @@ -27,8 +31,6 @@ def main(): from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller from DIRAC.FrameworkSystem.Utilities import MonitoringUtilities - __RCSID__ = "$Id$" - gComponentInstaller.exitOnError = True gComponentInstaller.getMySQLPasswords() for db in args: diff --git a/src/DIRAC/Core/scripts/dirac_install_extension.py b/src/DIRAC/Core/scripts/dirac_install_extension.py index c767b01346e..296c65d2fbc 100644 --- a/src/DIRAC/Core/scripts/dirac_install_extension.py +++ b/src/DIRAC/Core/scripts/dirac_install_extension.py @@ -1,37 +1,39 @@ #!/usr/bin/env python -""" dirac-install-extension command allows to add a specified extension -to an already existing DIRAC installation. No new version directory is created. -The command is based on the main DIRAC installer dirac-install.py. +""" +Allows to add a specified extension to an already existing DIRAC installation. +The extension can come from another project than the one installed. +No new version directory is created. The command is based on the main DIRAC installer dirac-install.py. -The valid options are: +Usage: + dirac-install-extension [options] ... - -l - the project in which the extension is developed - -r - the project release version - -e - the extension name. Several -e options can be given """ -from __future__ import unicode_literals, absolute_import, division, print_function +from __future__ import unicode_literals + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function import os import sys -import importlib -import getopt -import time import six +import time +import getopt +import importlib cmdOpts = (('r:', 'release=', 'Release version to install'), ('l:', 'project=', 'Project to install'), - ('e:', 'extensions=', 'Extensions to install (comma separated)'), + ('e:', 'extensions=', 'Extensions to install (comma separated). Several -e options can be given'), + ('M:', 'defaultsURL=', 'Where to retrieve the global defaults from'), ('h', 'help', 'help doc string')) def usage(): """ Usage printout """ - print("\nThe command allows to add a specified extension to an already existing DIRAC installation.\n" - "The extension can come from another project than the one installed.") - print("\nUsage:\n\n %s " % os.path.basename(sys.argv[0])) - print("\nOptions:") + print(__doc__) + print('Options::\n\n') for cmdOpt in cmdOpts: print(" %s %s : %s" % (cmdOpt[0].ljust(3), cmdOpt[1].ljust(20), cmdOpt[2])) diff --git a/src/DIRAC/Core/scripts/dirac_install_web_portal.py b/src/DIRAC/Core/scripts/dirac_install_web_portal.py index 4e8d7f81af8..87e69a06b9e 100755 --- a/src/DIRAC/Core/scripts/dirac_install_web_portal.py +++ b/src/DIRAC/Core/scripts/dirac_install_web_portal.py @@ -9,8 +9,9 @@ from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" -# + from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -18,10 +19,6 @@ @DIRACScript() def main(): Script.disableCS() - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ...' % Script.scriptName])) - Script.parseCommandLine() from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller diff --git a/src/DIRAC/Core/scripts/dirac_platform.py b/src/DIRAC/Core/scripts/dirac_platform.py index f134cb03d44..613f45f7234 100755 --- a/src/DIRAC/Core/scripts/dirac_platform.py +++ b/src/DIRAC/Core/scripts/dirac_platform.py @@ -3,12 +3,37 @@ # File : dirac-platform # Author : Adria Casajus ######################################################################## +""" +The *dirac-platform* script determines the "platform" of a certain node. +The platform is a string used to identify the minimal characteristics of the node, +enough to determine which version of DIRAC can be installed. +Invoked at any installation, so by the *dirac-install* script, and by the pilots. + +On a RHEL 6 node, for example, the determined dirac platform is "Linux_x86_64_glibc-2.5" + +Usage: + dirac-platform [options] + +Example: + $ dirac-platform + Linux_x86_64_glibc-2.5 + +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division + __RCSID__ = "$Id$" +import sys +import argparse + +parser = argparse.ArgumentParser( + description=__doc__, + formatter_class=argparse.RawDescriptionHelpFormatter) +parser.parse_known_args() + try: from DIRAC.Core.Utilities.Platform import getPlatformString except Exception: diff --git a/src/DIRAC/Core/scripts/dirac_service.py b/src/DIRAC/Core/scripts/dirac_service.py index 7626ce51622..56ed44730f9 100755 --- a/src/DIRAC/Core/scripts/dirac_service.py +++ b/src/DIRAC/Core/scripts/dirac_service.py @@ -3,7 +3,12 @@ # File : dirac-service # Author : Adria Casajus ######################################################################## +""" +This is a script to launch DIRAC services. Mostly internal. +Usage: + dirac-service [options] ... +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function @@ -21,6 +26,7 @@ @DIRACScript() def main(): localCfg = LocalConfiguration() + localCfg.setUsageMessage(__doc__) positionalArgs = localCfg.getPositionalArguments() if len(positionalArgs) == 0: diff --git a/src/DIRAC/Core/scripts/dirac_setup_site.py b/src/DIRAC/Core/scripts/dirac_setup_site.py index a99d454ff84..204b436c7c6 100755 --- a/src/DIRAC/Core/scripts/dirac_setup_site.py +++ b/src/DIRAC/Core/scripts/dirac_setup_site.py @@ -5,6 +5,12 @@ ######################################################################## """ Initial installation and configuration of a new DIRAC server (DBs, Services, Agents, Web Portal,...) + +Usage: + dirac-setup-site [option] ... [cfgfile] + +Arguments: + cfgfile: DIRAC Cfg with description of the configuration (optional) """ from __future__ import print_function from __future__ import absolute_import @@ -31,12 +37,6 @@ def main(): cliParams = Params() Script.disableCS() - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option] ... [cfgfile]' % Script.scriptName, - 'Arguments:', - ' cfgfile: DIRAC Cfg with description of the configuration (optional)'])) - Script.registerSwitch( "e", "exitOnError", diff --git a/src/DIRAC/Core/scripts/dirac_version.py b/src/DIRAC/Core/scripts/dirac_version.py index 6cd1072a1b4..f9e8540d576 100755 --- a/src/DIRAC/Core/scripts/dirac_version.py +++ b/src/DIRAC/Core/scripts/dirac_version.py @@ -4,12 +4,29 @@ # Author : Ricardo Graciani ######################################################################## """ - print version of current DIRAC installation +Print version of current DIRAC installation + +Usage: + dirac-version [option] + +Example: + $ dirac-version + """ from __future__ import print_function from __future__ import absolute_import from __future__ import division +__RCSID__ = "$Id$" + +import sys +import argparse + +parser = argparse.ArgumentParser( + description=__doc__, + formatter_class=argparse.RawDescriptionHelpFormatter) +parser.parse_known_args() + import DIRAC from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py index a8ce614b4f6..74b56d9243b 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py @@ -1,5 +1,12 @@ #!/usr/bin/env python -""" Enable using one or more Storage Elements +""" +Enable using one or more Storage Elements + +Usage: + dirac-admin-allow-se SE1 [SE2 ...] + +Example: + $ dirac-admin-allow-se M3PEC-disk """ from __future__ import print_function from __future__ import absolute_import @@ -20,13 +27,6 @@ def main(): site = '' mute = False - Script.setUsageMessage(""" - Enable using one or more Storage Elements - - Usage: - %s SE1 [SE2 ...] - """ % Script.scriptName) - Script.registerSwitch("r", "AllowRead", " Allow only reading from the storage element") Script.registerSwitch("w", "AllowWrite", " Allow only writing to the storage element") Script.registerSwitch("k", "AllowCheck", " Allow only check access to the storage element") diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py index 5bc1392e1b3..92386c4bb57 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py @@ -1,6 +1,13 @@ #!/usr/bin/env python -""" Ban one or more Storage Elements for usage +""" +Ban one or more Storage Elements for usage + +Usage: + dirac-admin-ban-se SE1 [SE2 ...] + +Example: + $ dirac-admin-ban-se M3PEC-disk """ from __future__ import print_function from __future__ import absolute_import @@ -21,13 +28,6 @@ def main(): site = '' mute = False - Script.setUsageMessage(""" - Ban one or more Storage Elements for usage - - Usage: - %s SE1 [SE2 ...] - """ % Script.scriptName) - Script.registerSwitch("r", "BanRead", " Ban only reading from the storage element") Script.registerSwitch("w", "BanWrite", " Ban writing to the storage element") Script.registerSwitch("k", "BanCheck", " Ban check access to the storage element") diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py index f621a6fcfe3..17cc9f30185 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py @@ -1,5 +1,20 @@ #!/usr/bin/env python - +""" +Show storage quotas for specified users or for all registered users if nobody is specified + +Usage: + dirac-admin-user-quota [user1 ...] + +Example: + $ dirac-admin-user-quota + ------------------------------ + Username | Quota (GB) + ------------------------------ + atsareg | None + msapunov | None + vhamar | None + ------------------------------ +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function @@ -13,13 +28,6 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Show storage quotas for specified users or for all registered users if nobody is specified - - Usage: - %s [user1 ...] - """ % Script.scriptName) - Script.parseCommandLine() users = Script.getPositionalArgs() diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py index 097596f2ece..91937e063de 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py @@ -4,16 +4,43 @@ # Author : Stuart Paterson ######################################################################## """ - Upload a file to the grid storage and register it in the File Catalog +Upload a file to the grid storage and register it in the File Catalog + +Usage: + dirac-dms-add-file [options] ... LFN Path SE [GUID] + +Arguments: + LFN: Logical File Name + Path: Local path to the file + SE: DIRAC Storage Element + GUID: GUID to use in the registration (optional) + +**OR** + +Usage: + dirac-dms-add-file [options] ... LocalFile ... + +Arguments: + LocalFile: Path to local file containing all the above, i.e.:: + + lfn1 localfile1 SE [GUID1] + lfn2 localfile2 SE [GUID2] + +Example: + $ dirac-dms-add-file LFN:/formation/user/v/vhamar/Example.txt Example.txt DIRAC-USER + {'Failed': {}, + 'Successful': {'/formationes/user/v/vhamar/Example.txt': {'put': 0.70791220664978027, + 'register': 0.61061787605285645}}} """ from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script -from DIRAC import S_OK import os +from DIRAC import S_OK +from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript overwrite = False @@ -43,26 +70,6 @@ def getDict(item_list): @DIRACScript() def main(): global overwrite - Script.setUsageMessage('\n'.join([ - __doc__.split('\n')[1], - '\nUsage:', - ' %s [option|cfgfile] ... LFN Path SE [GUID]' % Script.scriptName, - '\nArguments:', - ' LFN: Logical File Name', - ' Path: Local path to the file', - ' SE: DIRAC Storage Element', - ' GUID: GUID to use in the registration (optional)', - '', - '**OR**', - '', - 'Usage:', - ' %s [option|cfgfile] ... LocalFile' % Script.scriptName, - '\nArguments:', - ' LocalFile: Path to local file containing all the above, i.e.:', - ' lfn1 localfile1 SE [GUID1]', - ' lfn2 localfile2 SE [GUID2]' - ])) - Script.registerSwitch("f", "force", "Force overwrite of existing file", setOverwrite) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py index 83305171614..10a83f8dd3f 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py @@ -1,8 +1,20 @@ #!/usr/bin/env python +""" +Get metadata for the given file specified by its Logical File Name or for a list of files +contained in the specifed file +Usage: + dirac-dms-catalog-metadata [Catalog] + +Example: + $ dirac-dms-catalog-metadata /formation/user/v/vhamar/Example.txt + FileName Size GUID Status Checksum + /formation/user/v/vhamar/Example.txt 34 EDE6DDA4-3344-3F39-A993-8349BA41EB23 1 eed20d47 +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division + __RCSID__ = "$Id$" from DIRAC import exit as DIRACExit @@ -12,14 +24,6 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Get metadata for the given file specified by its Logical File Name or for a list of files - contained in the specifed file - - Usage: - %s [Catalog] - """ % Script.scriptName) - Script.parseCommandLine() from DIRAC.Resources.Catalog.FileCatalog import FileCatalog diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_change_replica_status.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_change_replica_status.py index 6df5a9fad8a..cb3d063a7c0 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_change_replica_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_change_replica_status.py @@ -1,5 +1,10 @@ #! /usr/bin/env python +""" +Change status of replica of a given file or a list of files at a given Storage Element +Usage: + dirac-dms-change-replica-status +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division @@ -13,13 +18,6 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Change status of replica of a given file or a list of files at a given Storage Element - - Usage: - %s - """ % Script.scriptName) - Script.parseCommandLine() from DIRAC.Resources.Catalog.FileCatalog import FileCatalog diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py index 02e8aeaa21c..5cc4e23e8f3 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py @@ -1,8 +1,20 @@ #! /usr/bin/env python - +""" +Clean the given directory or a list of directories by removing it and all the +contained files and subdirectories from the physical storage and from the +file catalogs. + +Usage: + dirac-dms-clean-directory + +Example: + $ dirac-dms-clean-directory /formation/user/v/vhamar/newDir + Cleaning directory /formation/user/v/vhamar/newDir ... OK +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" import os @@ -14,15 +26,6 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Clean the given directory or a list of directories by removing it and all the - contained files and subdirectories from the physical storage and from the - file catalogs. - - Usage: - %s - """ % Script.scriptName) - Script.parseCommandLine() args = Script.getPositionalArgs() diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_archive_request.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_archive_request.py index 9f2542db535..054ed4fbd88 100644 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_archive_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_archive_request.py @@ -1,4 +1,5 @@ -"""Create and put Requests to archive files. +""" +Create and put Requests to archive files. **List of operations** @@ -29,7 +30,6 @@ * Operations/DataManagement/ArchiveFiles/SourceSE * Operations/DataManagement/ArchiveFiles/MaxFiles * ... - """ from __future__ import absolute_import from __future__ import division @@ -86,7 +86,6 @@ def __init__(self): ('', 'SourceOnly', 'Only treat files that are already at the Source-SE'), ('X', 'Execute', 'Put Requests, else dryrun'), ] - self.setUsage() self.registerSwitchesAndParseCommandLine() self.switches['MaxSize'] = int(self.switches.setdefault('MaxSize', MAX_SIZE)) @@ -97,14 +96,6 @@ def __init__(self): self.lfnChunks = [] self.replicaSEs = [] - @staticmethod - def setUsage(): - """Set flags and options.""" - Script.setUsageMessage('\n'.join([__doc__, - 'Usage:', - ' %s [option|cfgfile]' % Script.scriptName, - ])) - @property def fcClient(self): """Return FileCatalogClient.""" diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_moving_request.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_moving_request.py index d160dfe3d8b..d8997eeb5c3 100644 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_moving_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_moving_request.py @@ -1,12 +1,11 @@ -"""Create and put Requests to move files. +""" +Create and put Requests to move files. List of operations: #. ReplicateAndRegister LFNs #. Check for Migration #. Remove all other replicas for these files - - """ from __future__ import absolute_import from __future__ import division @@ -49,19 +48,10 @@ def __init__(self): 'Ensure the LFNs are migrated to tape before removing any replicas'), ('X', 'Execute', 'Put Requests, else dryrun'), ] - self.setUsage() self.registerSwitchesAndParseCommandLine() self.getLFNList() self.getLFNMetadata() - @staticmethod - def setUsage(): - """Set flags and options.""" - Script.setUsageMessage('\n'.join([__doc__, - 'Usage:', - ' %s [option|cfgfile]' % Script.scriptName, - ])) - @property def fcClient(self): """Return FileCatalogClient.""" diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_removal_request.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_removal_request.py index 76d09d4f5e0..2dc726dd575 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_removal_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_removal_request.py @@ -1,9 +1,18 @@ #!/usr/bin/env python -""" Create a DIRAC RemoveReplica|RemoveFile request to be executed by the RMS +""" +Create a DIRAC RemoveReplica|RemoveFile request to be executed by the RMS + +Usage: + dirac-dms-create-removal-request [options] ... SE LFN ... + +Arguments: + SE: StorageElement|All + LFN: LFN or file containing a List of LFNs """ from __future__ import print_function from __future__ import absolute_import from __future__ import division + __RCSID__ = "ea64b42 (2012-07-29 16:45:05 +0200) ricardo " import os @@ -16,14 +25,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[0], - __doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... SE LFN ...' % Script.scriptName, - 'Arguments:', - ' SE: StorageElement|All', - ' LFN: LFN or file containing a List of LFNs'])) - Script.parseCommandLine(ignoreErrors=False) args = Script.getPositionalArgs() diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py index 98bd9b7bf01..0b262023c0d 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py @@ -1,5 +1,18 @@ #!/usr/bin/env python +""" +Get the size of the given file or a list of files +Usage: + dirac-dms-data-size + +Example: + $ dirac-dms-data-size /formation/user/v/vhamar/Example.txt + ------------------------------ + Files | Size (GB) + ------------------------------ + 1 | 0.0 + ------------------------------ +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function @@ -18,13 +31,6 @@ def main(): unit = 'GB' Script.registerSwitch("u:", "Unit=", " Unit to use [default %s] (MB,GB,TB,PB)" % unit) - Script.setUsageMessage(""" - Get the size of the given file or a list of files - - Usage: - %s - """ % Script.scriptName) - Script.parseCommandLine(ignoreErrors=False) for switch in Script.getUnprocessedSwitches(): if switch[0].lower() == "u" or switch[0].lower() == "unit": diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py index 8ac7c47a760..c5846003ea3 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py @@ -10,6 +10,19 @@ If option --sync is used contend that is not in the source directory but is only in the target directory will be deleted. + +Usage: + dirac-dms-directory-sync Source Destination + + e.g.: Download + dirac-dms-directory-sync LFN Path + or Upload + dirac-dms-directory-sync Path LFN SE + +Arguments: + LFN: Logical File Name (Path to directory) + Path: Local path to the file (Path to directory) + SE: DIRAC Storage Element """ from __future__ import absolute_import from __future__ import division @@ -24,21 +37,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([ - __doc__.split('\n')[1], - 'Usage:', - ' %s Source Destination' % Script.scriptName, - ' ', - ' e.g.: Download', - ' %s LFN Path' % Script.scriptName, - ' or Upload', - ' %s Path LFN SE' % Script.scriptName, - 'Arguments:', - ' LFN: Logical File Name (Path to directory)', - ' Path: Local path to the file (Path to directory)', - ' SE: DIRAC Storage Element' - ])) - Script.registerSwitch("D", "sync", "Make target directory identical to source") Script.registerSwitch("j:", "parallel=", "Multithreaded download and upload") Script.parseCommandLine(ignoreErrors=False) diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py index 6152a3d1357..5c4ca7bc6c9 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py @@ -1,8 +1,32 @@ #!/usr/bin/env python - +""" +Launch the File Catalog shell + +Usage: + dirac-dms-filecatalog-cli [option] + +Example: + $ dirac-dms-filecatalog-cli + Starting DIRAC FileCatalog client + File Catalog Client $Revision: 1.17 $Date: + FC:/>help + + Documented commands (type help ): + ======================================== + add chmod find guid ls pwd replicate rmreplica user + cd chown get id meta register rm size + chgrp exit group lcd mkdir replicas rmdir unregister + + Undocumented commands: + ====================== + help + + FC:/> +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division + import sys from DIRAC.Core.Base import Script @@ -11,13 +35,6 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Launch the File Catalog shell - - Usage: - %s [option] - """ % Script.scriptName) - fcType = 'FileCatalog' Script.registerSwitch("f:", "file-catalog=", " Catalog client type to use (default %s)" % fcType) Script.parseCommandLine(ignoreErrors=False) diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py index 61cb8f5421e..92b51e23dd0 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py @@ -1,15 +1,23 @@ #!/usr/bin/env python - """ Find files in the FileCatalog using file metadata + +Usage: + dirac-dms-find-lfns [options] metaspec [metaspec ...] + +Arguments: + metaspec: metadata index specification (of the form: "meta=value" or "meta1000" "CreationDate<2015-05-15" """ from __future__ import print_function from __future__ import absolute_import from __future__ import division -import DIRAC -from DIRAC.Core.Utilities.DIRACScript import DIRACScript +from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(): @@ -17,27 +25,13 @@ def main(): Script.registerSwitch('', 'Path=', ' Path to search for') Script.registerSwitch('', 'SE=', ' (comma-separated list of) SEs/SE-groups to be searched') - Script.setUsageMessage( - '\n'.join( - [ - __doc__.split('\n')[1], - 'Usage:', - ' %s [options] metaspec [metaspec ...]' % - Script.scriptName, - 'Arguments:', - ' metaspec: metadata index specification \ - (of the form: "meta=value" or "meta1000" "CreationDate<2015-05-15"', - ])) - Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() + import DIRAC + from DIRAC import gLogger from DIRAC.Resources.Catalog.FileCatalog import FileCatalog from DIRAC.DataManagementSystem.Client.MetaQuery import MetaQuery, FILE_STANDARD_METAKEYS - from DIRAC import gLogger from DIRAC.DataManagementSystem.Utilities.DMSHelpers import resolveSEGroup path = '/' diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_move_replica_request.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_move_replica_request.py index 2268aba5375..5c44782782f 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_move_replica_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_move_replica_request.py @@ -1,5 +1,14 @@ #!/usr/bin/env python -""" Create a DIRAC MoveReplica request to be executed by the RMS +""" +Create a DIRAC MoveReplica request to be executed by the RMS + +Usage: + dirac-dms-move-replica-request [options] ... sourceSE LFN targetSE1 [targetSE2...] + +Arguments: + sourceSE: source SE + targetSE: target SE + LFN: LFN or file containing a List of LFNs """ from __future__ import absolute_import from __future__ import division @@ -8,8 +17,9 @@ __RCSID__ = "$Id $" import os -from hashlib import md5 import time +from hashlib import md5 + from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -26,17 +36,6 @@ def getLFNList(arg): @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([ - __doc__.split('\n')[0], - __doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... sourceSE LFN targetSE1 [targetSE2...]' % Script.scriptName, - 'Arguments:', - ' sourceSE: source SE', - ' targetSE: target SE', - ' LFN: LFN or file containing a List of LFNs' - ])) - from DIRAC.Core.Base.Script import parseCommandLine parseCommandLine() diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_protocol_matrix.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_protocol_matrix.py index 847ff010fce..382b6fc045c 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_protocol_matrix.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_protocol_matrix.py @@ -1,47 +1,47 @@ #!/usr/bin/env python """ - Generate a matrix of protocols used between SEs for FTS transfers. - The output is a CSV file containing a matrix source/destination. - The value of each cell is of the form "proto1/proto2 ([protoA,protoB,...])" - proto1/proto2 are the protocols that would really be given to FTS for source and dest urls - protoA,protoB,etc are the sorted list of protocols that would be attempted for thrid party copy by DIRAC - - By default, all the SEs are taken into account, but the matrix is factorized by using baseSEs. - - Suppose you have the following in your CS:: - - StorageElementBases{ - IN2P3-Disk +Generate a matrix of protocols used between SEs for FTS transfers. +The output is a CSV file containing a matrix source/destination. +The value of each cell is of the form "proto1/proto2 ([protoA,protoB,...])" +proto1/proto2 are the protocols that would really be given to FTS for source and dest urls +protoA,protoB,etc are the sorted list of protocols that would be attempted for thrid party copy by DIRAC + +By default, all the SEs are taken into account, but the matrix is factorized by using baseSEs. + +Suppose you have the following in your CS:: + + StorageElementBases{ + IN2P3-Disk + } + StorageElements{ + IN2P3-DST{ + BaseSE = IN2P3-Disk } - StorageElements{ - IN2P3-DST{ - BaseSE = IN2P3-Disk - } - IN2P3-User{ - BaseSE = IN2P3-Disk - } - AnotherDisk{ - } + IN2P3-User{ + BaseSE = IN2P3-Disk } + AnotherDisk{ + } + } - You can have the following combinations:: - - DIRAC-PROD>dirac-dms-protocol-matrix - Using sources: IN2P3-Disk, AnotherDisk - Using target: IN2P3-Disk, AnotherDisk +You can have the following combinations:: - DIRAC-PROD>dirac-dms-protocol-matrix --FromSE=IN2P3-User - Using sources: IN2P3-User - Using target: IN2P3-Disk, AnotherDisk + DIRAC-PROD>dirac-dms-protocol-matrix + Using sources: IN2P3-Disk, AnotherDisk + Using target: IN2P3-Disk, AnotherDisk - DIRAC-PROD>dirac-dms-protocol-matrix --FromSE=IN2P3-User --Bidirection - Using sources: IN2P3-User - Using target: IN2P3-User + DIRAC-PROD>dirac-dms-protocol-matrix --FromSE=IN2P3-User + Using sources: IN2P3-User + Using target: IN2P3-Disk, AnotherDisk + DIRAC-PROD>dirac-dms-protocol-matrix --FromSE=IN2P3-User --Bidirection + Using sources: IN2P3-User + Using target: IN2P3-User """ from __future__ import absolute_import from __future__ import division from __future__ import print_function + import csv from collections import defaultdict @@ -55,10 +55,6 @@ def main(): Script.registerSwitch('', 'TargetSE=', 'SE1[,SE2,...]') Script.registerSwitch('', 'OutputFile=', 'CSV output file (default /tmp/protocol-matrix.csv)') Script.registerSwitch('', 'Bidirection', 'If FromSE or TargetSE are specified, make a square matrix ') - Script.setUsageMessage('\n'.join([__doc__, - 'Usage:', - ' %s [option|cfgfile] % Script.scriptName'])) - from DIRAC.Core.Base.Script import parseCommandLine parseCommandLine() from DIRAC import gConfig, gLogger diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_put_and_register_request.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_put_and_register_request.py index a3f5d8a8e50..1c2f554000c 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_put_and_register_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_put_and_register_request.py @@ -1,13 +1,24 @@ #!/bin/env python -""" create and put 'PutAndRegister' request with a single local file +""" +Create and put 'PutAndRegister' request with a single local file warning: make sure the file you want to put is accessible from DIRAC production hosts, i.e. put file on network fs (AFS or NFS), otherwise operation will fail!!! + +Usage: + dirac-dms-put-and-register-request [options] requestName LFN localFile targetSE + +Arguments: + requestName: a request name + LFN: logical file name + localFile: local file you want to put + targetSE: target SE """ from __future__ import absolute_import from __future__ import division from __future__ import print_function -__RCSID__ = "$Id: $" + +__RCSID__ = "$Id$" import os @@ -17,17 +28,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([ - __doc__, - 'Usage:', - ' %s [option|cfgfile] requestName LFN localFile targetSE' % Script.scriptName, - 'Arguments:', - ' requestName: a request name', - ' LFN: logical file name' - ' localFile: local file you want to put', - ' targetSE: target SE' - ])) - from DIRAC.Core.Base.Script import parseCommandLine parseCommandLine() diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_files.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_files.py index b0f6c99358d..69a6cbc161f 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_files.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_files.py @@ -2,6 +2,16 @@ ######################################################################## # $Header: $ ######################################################################## +""" +Remove the given file or a list of files from the File Catalog + +Usage: + dirac-file-remove-catalog-files + +Example: + $ dirac-dms-remove-catalog-files /formation/user/v/vhamar/1/1134/StdOut + Successfully removed 1 catalog files. +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division @@ -16,13 +26,6 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Remove the given file or a list of files from the File Catalog - - Usage: - %s - """ % Script.scriptName) - Script.parseCommandLine() from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_replicas.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_replicas.py index 89584c11ad7..25ae349a428 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_replicas.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_replicas.py @@ -1,5 +1,12 @@ #!/usr/bin/env python - +""" +Remove the given file replica or a list of file replicas from the File Catalog +This script should be used with great care as it may leave dark data in the storage! +Use dirac-dms-remove-replicas instead + +Usage: + dirac-dms-remove-catalog-replicas +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division @@ -16,15 +23,6 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Remove the given file replica or a list of file replicas from the File Catalog - This script should be used with great care as it may leave dark data in the storage! - Use dirac-dms-remove-replicas instead - - Usage: - %s - """ % Script.scriptName) - Script.parseCommandLine() from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py index f9ef4b60211..221a5eee8d2 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py @@ -1,5 +1,13 @@ #!/usr/bin/env python +""" +Remove the given file or a list of files from the File Catalog and from the storage +Usage: + dirac-dms-remove-files + +Example: + $ dirac-dms-remove-files /formation/user/v/vhamar/Test.txt +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function @@ -12,13 +20,6 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Remove the given file or a list of files from the File Catalog and from the storage - - Usage: - %s - """ % Script.scriptName) - Script.parseCommandLine() import os diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py index 028c65409fb..3786fe63674 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py @@ -1,8 +1,19 @@ #!/usr/bin/env python +""" +Remove the given file replica or a list of file replicas from the File Catalog +and from the storage. + +Usage: + dirac-dms-remove-replicas SE [SE] +Example: + $ dirac-dms-remove-replicas /formation/user/v/vhamar/Test.txt IBCP-disk + Successfully removed DIRAC-USER replica of /formation/user/v/vhamar/Test.txt +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division + __RCSID__ = "$Id$" from DIRAC import exit as DIRACExit @@ -12,15 +23,6 @@ @DIRACScript() def main(): - - Script.setUsageMessage(""" -Remove the given file replica or a list of file replicas from the File Catalog -and from the storage. - -Usage: - %s SE [SE] -""" % Script.scriptName) - Script.parseCommandLine() from DIRAC.Core.Utilities.List import breakListIntoChunks diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py index 47744c0b87b..9fb8c1ef50a 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py @@ -1,5 +1,10 @@ #!/usr/bin/env python +""" +Get the given file replica metadata from the File Catalog +Usage: + dirac-dms-replica-metadata SE +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division @@ -15,13 +20,6 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Get the given file replica metadata from the File Catalog - - Usage: - %s SE - """ % Script.scriptName) - Script.parseCommandLine() from DIRAC import gLogger diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replicate_and_register_request.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replicate_and_register_request.py index 73c15036314..230f9689b92 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replicate_and_register_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replicate_and_register_request.py @@ -1,5 +1,15 @@ #!/bin/env python -"""Create and put 'ReplicateAndRegister' request.""" +""" +Create and put 'ReplicateAndRegister' request. + +Usage: + dirac-dms-replicate-and-register-request [options] requestName LFNs targetSE1 [targetSE2 ...] + +Arguments: + requestName: a request name + LFNs: single LFN or file with LFNs + targetSE: target SE +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function @@ -23,16 +33,6 @@ def getLFNList(arg): @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([ - __doc__, - 'Usage:', - ' %s [option|cfgfile] requestName LFNs targetSE1 [targetSE2 ...]' % Script.scriptName, - 'Arguments:', - ' requestName: a request name', - ' LFNs: single LFN or file with LFNs', - ' targetSE: target SE', - ])) - catalog = None Script.registerSwitch("C:", "Catalog=", "Catalog to use") Script.parseCommandLine() diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py index 8b5efb3693f..3bad52a0992 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py @@ -1,4 +1,10 @@ #!/usr/bin/env python +""" +Returns the LFN matching given GUIDs + +Usage: + dirac-dms-resolve-guid +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function @@ -11,12 +17,6 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Returns the LFN matching given GUIDs - Usage: - %s - """ % Script.scriptName) - Script.parseCommandLine() import DIRAC diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_set_replica_status.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_set_replica_status.py index 200c9ae2f21..d0f55c2b6c7 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_set_replica_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_set_replica_status.py @@ -1,10 +1,20 @@ #!/usr/bin/env python """ Set the status of the replicas of given files at the provided SE + +Usage: + dirac-dms-set-replica-status [options] ... SE Status + +Arguments: + LFN: LFN + File: File name containing a list of affected LFNs + SE: Name of Storage Element + Status: New Status for the replica """ from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" from DIRAC.Core.Base import Script @@ -13,15 +23,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - '\nUsage:', - ' %s [option|cfgfile] ... SE Status' % Script.scriptName, - 'Arguments:', - ' LFN: LFN', - ' File: File name containing a list of affected LFNs', - ' SE: Name of Storage Element', - ' Status: New Status for the replica'])) - Script.parseCommandLine(ignoreErrors=False) import DIRAC diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_show_se_status.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_show_se_status.py index 5ad4d83debb..e4969c6881e 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_show_se_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_show_se_status.py @@ -1,5 +1,20 @@ #!/usr/bin/env python +""" +Get status of the available Storage Elements +Usage: + dirac-dms-show-se-status [] + +Example: + $ dirac-dms-show-se-status + Storage Element Read Status Write Status + DIRAC-USER Active Active + IN2P3-disk Active Active + IPSL-IPGP-disk Active Active + IRES-disk InActive InActive + M3PEC-disk Active Active + ProductionSandboxSE Active Active +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division @@ -44,13 +59,6 @@ def main(): global noVOFlag global allVOsFlag - Script.setUsageMessage(""" -Get status of the available Storage Elements - -Usage: - %s [] -""" % Script.scriptName) - Script.registerSwitch("V:", "vo=", "Virtual Organization", setVO) Script.registerSwitch("a", "all", "All Virtual Organizations flag", setAllVO) Script.registerSwitch("n", "noVO", "No Virtual Organizations assigned flag", setNoVO) diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py index 70436fd44e9..5957f4180ea 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py @@ -1,10 +1,24 @@ #!/usr/bin/env python """ Get the list of all the user files. + +Example: + $ dirac-dms-user-lfns + /formation/user/v/vhamar: 14 files, 6 sub-directories + /formation/user/v/vhamar/newDir2: 0 files, 0 sub-directories + /formation/user/v/vhamar/testDir: 0 files, 0 sub-directories + /formation/user/v/vhamar/0: 0 files, 6 sub-directories + /formation/user/v/vhamar/test: 0 files, 0 sub-directories + /formation/user/v/vhamar/meta-test: 0 files, 0 sub-directories + /formation/user/v/vhamar/1: 0 files, 4 sub-directories + /formation/user/v/vhamar/0/994: 1 files, 0 sub-directories + /formation/user/v/vhamar/0/20: 1 files, 0 sub-directories + 16 matched files have been put in formation-user-v-vhamar.lfns """ from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" from DIRAC.Core.Base import Script @@ -26,10 +40,6 @@ def main(): Script.registerSwitch("b:", "BaseDir=", "Base directory to begin search (default /[vo]/user/[initial]/[username])") Script.registerSwitch("e", "EmptyDirs", "Create a list of empty directories") - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ...' % Script.scriptName, ])) - Script.parseCommandLine(ignoreErrors=False) for switch in Script.getUnprocessedSwitches(): diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py index 968e8dd7012..8dde56d801b 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py @@ -1,8 +1,18 @@ #!/usr/bin/env python +""" +Get the currently defined user data volume quotas +Usage: + dirac-dms-user-quota [options] + +Example: + $ dirac-dms-user-quota + Current quota found to be 0.0 GB +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" from DIRAC.Core.Base import Script @@ -11,13 +21,6 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Get the currently defined user data volume quotas - - Usage: - %s [options] - """ % Script.scriptName) - Script.parseCommandLine(ignoreErrors=False) import DIRAC diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py index ff9d72caada..49f1e77b967 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py @@ -3,14 +3,14 @@ # File : dirac-admin-get-CAs # Author : Ricardo Graciani ######################################################################## -"""Refresh the local copy of the CA certificates and revocation lists. +""" +Refresh the local copy of the CA certificates and revocation lists. Connects to the BundleDelivery service to obtain the tar balls. Needed when proxies appear to be invalid. -Usage: - - dirac-admin-get-CAs (|)* +Example: + $ dirac-admin-get-CAs """ from __future__ import absolute_import from __future__ import division @@ -27,8 +27,6 @@ @DIRACScript() def main(): Script.addDefaultOptionValue('/DIRAC/Security/SkipCAChecks', 'yes') - Script.setUsageMessage(__doc__) - Script.parseCommandLine(ignoreErrors=True) bdc = BundleDeliveryClient() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py index 69830d92b4f..dda23c2c2b2 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py @@ -4,11 +4,24 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve a delegated proxy for the given user and group +Retrieve a delegated proxy for the given user and group + +Usage: + dirac-admin-get-proxy [options] ... group + +Arguments: + DN: DN of the user + user: DIRAC user name (will fail if there is more than 1 DN registered) + group: DIRAC group name + +Example: + $ dirac-admin-get-proxy vhamar dirac_user + Proxy downloaded to /afs/in2p3.fr/home/h/hamar/proxy.vhamar.dirac_user """ from __future__ import print_function from __future__ import absolute_import from __future__ import division + import os import DIRAC @@ -98,14 +111,6 @@ def main(): params = Params() params.registerCLISwitches() - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... group' % Script.scriptName, - 'Arguments:', - ' DN: DN of the user', - ' user: DIRAC user name (will fail if there is more than 1 DN registered)', - ' group: DIRAC group name'])) - Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py index 832cf7cc9f8..b7114bdfde1 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py @@ -3,17 +3,24 @@ # File : dirac-admin-proxy-upload.py # Author : Adrian Casajus ######################################################################## +""" +Upload proxy. +Example: + $ dirac-admin-proxy-upload +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division + +__RCSID__ = "$Id$" + import sys + from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.FrameworkSystem.Client.ProxyUpload import CLIParams, uploadProxy -__RCSID__ = "$Id$" - @DIRACScript() def main(): diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py index 2f6383fe0f4..764fae3ecf6 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py @@ -1,12 +1,21 @@ #!/usr/bin/env python +""" +System administrator client. + +Example: + $ dirac-admin-sysadmin-cli --host dirac.in2p3.fr + DIRAC Root Path = /afs/in2p3.fr/home/h/hamar/DIRAC-v5r12 + dirac.in2p3.fr > +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function -from DIRAC.Core.Base import Script -from DIRAC.Core.Utilities.DIRACScript import DIRACScript __RCSID__ = "$Id$" +from DIRAC.Core.Base import Script +from DIRAC.Core.Utilities.DIRACScript import DIRACScript + @DIRACScript() def main(): diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py index 26f139b839e..79ad3bdd000 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py @@ -1,6 +1,12 @@ #!/usr/bin/env python """ Script to apply update to all or some dirac servers and restart them + +Usage: + dirac-admin-update-instance version + +Arguments: + version: version of DIRAC you want to update to """ from __future__ import absolute_import from __future__ import division @@ -17,14 +23,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([ - __doc__.split('\n')[1], - 'Usage:', - ' %s version' % Script.scriptName, - ' ', - 'Arguments:', - ' version: version of DIRAC you want to update to', - ])) Script.registerSwitch("", "hosts=", "Comma separated list of hosts or file containing row wise list of hosts" " targeted for update (leave empty for all)") Script.registerSwitch("", "retry=", "Number of retry attempts on hosts that have failed to update") diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py index 54badad3bf3..9e3b8488e4d 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py @@ -1,6 +1,12 @@ #!/usr/bin/env python """ Script to update pilot version in CS + +Usage: + dirac-admin-update-pilot version + +Arguments: + version: pilot version you want to update to """ from __future__ import absolute_import from __future__ import division @@ -15,14 +21,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([ - __doc__.split('\n')[1], - 'Usage:', - ' %s version' % Script.scriptName, - ' ', - 'Arguments:', - ' version: pilot version you want to update to' - ])) Script.registerSwitch( "v:", "vo=", diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_users_with_proxy.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_users_with_proxy.py index 0aea5d1f32f..188a711e3b1 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_users_with_proxy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_users_with_proxy.py @@ -1,13 +1,34 @@ #!/usr/bin/env python +""" +Print list of users with proxies. +Example: + $ dirac-admin-users-with-proxy + * vhamar + DN : /O=GRID-FR/C=FR/O=CNRS/OU=CPPM/CN=Vanessa Hamar + group : dirac_admin + not after : 2011-06-29 12:04:25 + persistent : False + - + DN : /O=GRID-FR/C=FR/O=CNRS/OU=CPPM/CN=Vanessa Hamar + group : dirac_pilot + not after : 2011-06-29 12:04:27 + persistent : False + - + DN : /O=GRID-FR/C=FR/O=CNRS/OU=CPPM/CN=Vanessa Hamar + group : dirac_user + not after : 2011-06-29 12:04:30 + persistent : True +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division + import DIRAC from DIRAC.Core.Base import Script +from DIRAC.Core.Utilities import Time from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.FrameworkSystem.Client.ProxyManagerClient import gProxyManager -from DIRAC.Core.Utilities import Time __RCSID__ = "$Id$" @@ -35,7 +56,6 @@ def registerCLISwitches(self): def main(): params = Params() params.registerCLISwitches() - Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() result = gProxyManager.getDBContents() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py index be2449799ff..6d9e88d584d 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py @@ -1,18 +1,25 @@ #!/usr/bin/env python """ Do the initial installation and configuration of a DIRAC component + +Usage: + dirac-install-component [options] ... System Component|System/Component + +Arguments: + System: Name of the DIRAC system (ie: WorkloadManagement) + Service: Name of the DIRAC component (ie: Matcher) """ from __future__ import absolute_import from __future__ import division from __future__ import print_function +from DIRAC import exit as DIRACexit from DIRAC import gConfig, gLogger, S_OK -from DIRAC.ConfigurationSystem.Client.Helpers import getCSExtensions -from DIRAC.FrameworkSystem.Utilities import MonitoringUtilities from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript -from DIRAC import exit as DIRACexit +from DIRAC.FrameworkSystem.Utilities import MonitoringUtilities +from DIRAC.ConfigurationSystem.Client.Helpers import getCSExtensions __RCSID__ = "$Id$" @@ -54,13 +61,6 @@ def main(): Script.registerSwitch("w", "overwrite", "Overwrite the configuration in the global CS", setOverwrite) Script.registerSwitch("m:", "module=", "Python module name for the component code", setModule) Script.registerSwitch("p:", "parameter=", "Special component option ", setSpecialOption) - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... System Component|System/Component' % Script.scriptName, - 'Arguments:', - ' System: Name of the DIRAC system (ie: WorkloadManagement)', - ' Service: Name of the DIRAC component (ie: Matcher)'])) - Script.parseCommandLine() args = Script.getPositionalArgs() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py b/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py index 116b5979745..30cb0d94458 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py @@ -1,6 +1,13 @@ #!/usr/bin/env python """ Do the initial installation and configuration of a DIRAC service based on tornado + +Usage: + dirac-install-tornado-service [options] ... System Component|System/Component + +Arguments: + System: Name of the DIRAC system (ie: WorkloadManagement) + Service: Name of the DIRAC component (ie: Matcher) """ from __future__ import absolute_import @@ -9,12 +16,12 @@ __RCSID__ = "$Id$" +from DIRAC import exit as DIRACexit from DIRAC import gConfig, gLogger, S_OK -from DIRAC.ConfigurationSystem.Client.Helpers import getCSExtensions -from DIRAC.FrameworkSystem.Utilities import MonitoringUtilities from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript -from DIRAC import exit as DIRACexit +from DIRAC.FrameworkSystem.Utilities import MonitoringUtilities +from DIRAC.ConfigurationSystem.Client.Helpers import getCSExtensions __RCSID__ = "$Id$" @@ -59,13 +66,6 @@ def main(): Script.registerSwitch("w", "overwrite", "Overwrite the configuration in the global CS", setOverwrite) Script.registerSwitch("m:", "module=", "Python module name for the component code", setModule) Script.registerSwitch("p:", "parameter=", "Special component option ", setSpecialOption) - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... System Component|System/Component' % Script.scriptName, - 'Arguments:', - ' System: Name of the DIRAC system (ie: WorkloadManagement)', - ' Service: Name of the DIRAC component (ie: Matcher)'])) - Script.parseCommandLine() args = Script.getPositionalArgs() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py b/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py index 799ab52449f..20fd2c409d5 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py @@ -46,13 +46,7 @@ def main(): "exclude=", "Comma separated list of hosts to be excluded from the scanning process", setExcludedHosts) - - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... [debug]' % Script.scriptName])) - Script.parseCommandLine(ignoreErrors=False) - args = Script.getPositionalArgs() componentType = '' diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py index 8b109a63cbb..54e1710b354 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py @@ -1,27 +1,28 @@ #!/usr/bin/env python """ -command line tool to remove local and remote proxies +Command line tool to remove local and remote proxies + +Example: + $ dirac-proxy-destroy -a """ from __future__ import absolute_import from __future__ import division from __future__ import print_function +__RCSID__ = "$Id$" import os import DIRAC from DIRAC import gLogger, S_OK -from DIRAC.Core.Security import Locations from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript +from DIRAC.Core.Security import Locations, ProxyInfo from DIRAC.Core.DISET.RPCClient import RPCClient from DIRAC.FrameworkSystem.Client.ProxyManagerClient import gProxyManager -from DIRAC.Core.Security import ProxyInfo from DIRAC.ConfigurationSystem.Client.Helpers import Registry -__RCSID__ = "$Id$" - class Params(object): """ @@ -60,7 +61,6 @@ def registerCLISwitches(self): """ add options to dirac option parser """ - Script.setUsageMessage("Script to delete a dirac proxy. Default: delete local proxy only.") Script.registerSwitch( "a", "all", diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_get_uploaded_info.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_get_uploaded_info.py index 3a68a55b366..e035b4574ee 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_get_uploaded_info.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_get_uploaded_info.py @@ -1,12 +1,26 @@ #!/usr/bin/env python ######################################################################## -# File : dirac-proxy-init.py +# File : dirac_proxy_get_uploaded_info.py # Author : Adrian Casajus ######################################################################## +""" +Print information about uploaded proxies. + +Example: + $ dirac-proxy-get-uploaded-info + Checking for DNs /O=GRID-FR/C=FR/O=CNRS/OU=CPPM/CN=Vanessa Hamar + -------------------------------------------------------------------------------------------------------- + | UserDN | UserGroup | ExpirationTime | PersistentFlag | + -------------------------------------------------------------------------------------------------------- + | /O=GRID-FR/C=FR/O=CNRS/OU=CPPM/CN=Vanessa Hamar | dirac_user | 2011-06-29 12:04:25 | True | + -------------------------------------------------------------------------------------------------------- +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division +__RCSID__ = "$Id$" + import sys from DIRAC import gLogger, S_OK @@ -17,8 +31,6 @@ from DIRAC.Core.Security.ProxyInfo import getProxyInfo from DIRAC.ConfigurationSystem.Client.Helpers import Registry -__RCSID__ = "$Id:" - userName = False @@ -38,7 +50,6 @@ def setUser(arg): def main(): global userName Script.registerSwitch("u:", "user=", "User to query (by default oneself)", setUser) - Script.parseCommandLine() result = getProxyInfo() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py index bdf07caf4af..701f56cd4d6 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py @@ -3,18 +3,32 @@ # File : dirac-proxy-info.py # Author : Adrian Casajus ######################################################################## - +""" +Print information about the current proxy. + +Example: + $ dirac-proxy-info + subject : /O=GRID-FR/C=FR/O=CNRS/OU=CPPM/CN=Vanessa Hamar/CN=proxy/CN=proxy + issuer : /O=GRID-FR/C=FR/O=CNRS/OU=CPPM/CN=Vanessa Hamar/CN=proxy + identity : /O=GRID-FR/C=FR/O=CNRS/OU=CPPM/CN=Vanessa Hamar + timeleft : 23:53:55 + DIRAC group : dirac_user + path : /tmp/x509up_u40885 + username : vhamar + VOMS : True + VOMS fqan : ['/formation'] +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division +__RCSID__ = "$Id$" + import sys from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Utilities.ReturnValues import S_OK -__RCSID__ = "$Id$" - class Params(object): diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py index 693ad998b7b..d3b16e1ba78 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py @@ -3,6 +3,13 @@ # File : dirac-proxy-init.py # Author : Adrian Casajus ######################################################################## +""" +Creating a proxy. + +Example: + $ dirac-proxy-init -g dirac_user -t --rfc + Enter Certificate password: +""" from __future__ import division from __future__ import absolute_import from __future__ import print_function diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py index ba4e2fa16d7..9915124ecc3 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py @@ -1,12 +1,20 @@ #!/usr/bin/env python """ - Restart DIRAC component using runsvctrl utility +Restart DIRAC component using runsvctrl utility + +Usage: + dirac-restart-component [options] ... [System [Service|Agent]] + +Arguments: + System: Name of the system for the component (default *: all) + Service|Agent: Name of the particular component (default *: all) """ from __future__ import print_function from __future__ import absolute_import from __future__ import division + __RCSID__ = "$Id$" -# + from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -14,12 +22,6 @@ @DIRACScript() def main(): Script.disableCS() - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... [System [Service|Agent]]' % Script.scriptName, - 'Arguments:', - ' System: Name of the system for the component (default *: all)', - ' Service|Agent: Name of the particular component (default *: all)'])) Script.parseCommandLine() args = Script.getPositionalArgs() if len(args) > 2: diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py index 5a3e03ecafe..210d2c6d51b 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py @@ -1,6 +1,13 @@ #!/usr/bin/env python """ Start DIRAC component using runsvctrl utility + +Usage: + dirac-start-component [options] ... [system [service|agent]] + +Arguments: + system: Name of the system for the component (default *: all) + service|agent: Name of the particular component (default *: all) """ from __future__ import print_function from __future__ import absolute_import @@ -15,12 +22,6 @@ @DIRACScript() def main(): Script.disableCS() - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... [system [service|agent]]' % Script.scriptName, - 'Arguments:', - ' system: Name of the system for the component (default *: all)', - ' service|agent: Name of the particular component (default *: all)'])) Script.parseCommandLine() args = Script.getPositionalArgs() if len(args) > 2: diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py index d202db7329e..df3c04da6f9 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py @@ -1,8 +1,21 @@ #!/usr/bin/env python """ Status of DIRAC components using runsvstat utility + +Usage: + dirac-status-component [options] ... [system [service|agent]] + +Arguments: + system: Name of the system for the component (default *: all) + service|agent: Name of the particular component (default *: all) + +Example: + $ dirac-status-component + DIRAC Root Path = /vo/dirac/versions/Lyon-HEAD-1296215324 + Name : Runit Uptime PID + WorkloadManagement_PilotStatusAgent : Run 4029 1697 + WorkloadManagement_JobHistoryAgent : Run 4029 167 """ -# from __future__ import print_function from __future__ import absolute_import from __future__ import division @@ -14,13 +27,6 @@ @DIRACScript() def main(): Script.disableCS() - - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... [system [service|agent]]' % Script.scriptName, - 'Arguments:', - ' system: Name of the system for the component (default *: all)', - ' service|agent: Name of the particular component (default *: all)'])) Script.parseCommandLine() args = Script.getPositionalArgs() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py index a4992d27614..059053a71b1 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py @@ -1,10 +1,18 @@ #!/usr/bin/env python """ -Do the initial installation and configuration of the DIRAC MySQL server +Stop DIRAC component using runsvctrl utility + +Usage: + dirac-stop-component [options] ... [system [service|agent]] + +Arguments: + system: Name of the system for the component (default *: all) + service|agent: Name of the particular component (default *: all) """ from __future__ import print_function from __future__ import absolute_import from __future__ import division + from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -12,12 +20,6 @@ @DIRACScript() def main(): Script.disableCS() - Script.setUsageMessage('\n'.join(['Stop DIRAC component using runsvctrl utility', - 'Usage:', - ' %s [option|cfgfile] ... [system [service|agent]]' % Script.scriptName, - 'Arguments:', - ' system: Name of the system for the component (default *: all)', - ' service|agent: Name of the particular component (default *: all)'])) Script.parseCommandLine() args = Script.getPositionalArgs() @@ -35,10 +37,9 @@ def main(): if system != '*': if len(args) > 1: component = args[1] - # - # + gComponentInstaller.exitOnError = True - # + result = gComponentInstaller.runsvctrlComponent(system, component, 'd') if not result['OK']: print('ERROR:', result['Message']) diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py b/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py index f0f99c2b84c..a1b25e60de3 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py @@ -5,21 +5,19 @@ ######################################################################## """ - Utility to send an e-mail using DIRAC notification service. +Utility to send an e-mail using DIRAC notification service. - Arguments: - Formated text message. The message consists of e-mail headers and e-mail body - separated by two newline characters. Headers are key : value pairs separated - by newline character. Meaningful headers are "To:", "From:", "Subject:". - Other keys will be ommited. - Message body is an arbitrary string. +Arguments: + Formated text message. The message consists of e-mail headers and e-mail body + separated by two newline characters. Headers are key : value pairs separated + by newline character. Meaningful headers are "To:", "From:", "Subject:". + Other keys will be ommited. + Message body is an arbitrary string. - Options: - There are no options. +Examples:: - Examples: - dirac-sys-sendmail "From: source@email.com\\nTo: destination@email.com\\nSubject: Test\\n\\nMessage body" - echo "From: source@email.com\\nSubject: Test\\n\\nMessage body" | dirac-sys-sendmail destination@email.com + dirac-sys-sendmail "From: source@email.com\\nTo: destination@email.com\\nSubject: Test\\n\\nMessage body" + echo "From: source@email.com\\nSubject: Test\\n\\nMessage body" | dirac-sys-sendmail destination@email.com """ from __future__ import print_function @@ -39,8 +37,6 @@ @DIRACScript() def main(): - Script.setUsageMessage(''.join(__doc__)) - Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py index eeb13590b66..58da55a64c5 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py @@ -1,20 +1,27 @@ #!/usr/bin/env python - """ Uninstallation of a DIRAC component + +Usage: + dirac-uninstall-component [options] ... System Component|System/Component + +Arguments: + System: Name of the DIRAC system (ie: WorkloadManagement) + Component: Name of the DIRAC component (ie: Matcher) """ from __future__ import absolute_import from __future__ import division from __future__ import print_function import socket -from DIRAC.FrameworkSystem.Client.ComponentMonitoringClient import ComponentMonitoringClient -from DIRAC.FrameworkSystem.Utilities import MonitoringUtilities + +from DIRAC import exit as DIRACexit from DIRAC import gLogger, S_OK from DIRAC.Core.Base import Script -from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Utilities.PromptUser import promptUser -from DIRAC import exit as DIRACexit +from DIRAC.Core.Utilities.DIRACScript import DIRACScript +from DIRAC.FrameworkSystem.Utilities import MonitoringUtilities +from DIRAC.FrameworkSystem.Client.ComponentMonitoringClient import ComponentMonitoringClient __RCSID__ = "$Id$" @@ -35,13 +42,6 @@ def main(): gComponentInstaller.exitOnError = True Script.registerSwitch("f", "force", "Forces the removal of the logs", setForce) - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... System Component|System/Component' % Script.scriptName, - 'Arguments:', - ' System: Name of the DIRAC system (ie: WorkloadManagement)', - ' Component: Name of the DIRAC component (ie: Matcher)'])) - Script.parseCommandLine() args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py index 7fde384cb34..e688b6d072b 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py @@ -1,8 +1,20 @@ #!/usr/bin/env python +""" +Add or Modify a Group info in DIRAC +Usage: + dirac-admin-add-group [options] ... Property= ... + +Arguments: + Property=: Other properties to be added to the Group like (VOMSRole=XXXX) + +Example: + $ dirac-admin-add-group -G dirac_test +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" # pylint: disable=wrong-import-position @@ -44,13 +56,6 @@ def main(): global groupName global groupProperties global userNames - Script.setUsageMessage('\n'.join(['Add or Modify a Group info in DIRAC', - '\nUsage:\n', - ' %s [option|cfgfile] ... Property= ...' % Script.scriptName, - '\nArguments:\n', - ' Property=: Other properties to be added to the User like (VOMSRole=XXXX)', - ])) - Script.registerSwitch('G:', 'GroupName:', 'Name of the Group (Mandatory)', setGroupName) Script.registerSwitch( 'U:', diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py index 8b989ab1a0d..02557c48804 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py @@ -1,8 +1,22 @@ #!/usr/bin/env python +""" +Add or Modify a Host info in DIRAC + +Usage: + dirac-admin-add-host [options] ... Property= ... + +Arguments: + Property=: Other properties to be added to the Host like (Responsible=XXX) + +Example: + $ dirac-admin-add-host -H dirac.i2np3.fr -D /O=GRID-FR/C=FR/O=CNRS/OU=CC-IN2P3/CN=dirac.in2p3.fr +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" + import DIRAC from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -39,14 +53,6 @@ def main(): global hostName global hostDN global hostProperties - Script.setUsageMessage('\n'.join([ - 'Add or Modify a Host info in DIRAC', - '\nUsage:\n', - ' %s [option|cfgfile] ... Property= ...' % Script.scriptName, - '\nArguments:\n', - ' Property=: Other properties to be added to the User like (Responsible=XXX)', - ])) - Script.registerSwitch('H:', 'HostName:', 'Name of the Host (Mandatory)', setHostName) Script.registerSwitch('D:', 'HostDN:', 'DN of the Host Certificate (Mandatory)', setHostDN) Script.registerSwitch( diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py index 8c0ef418a22..150763646cc 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py @@ -1,5 +1,16 @@ #!/usr/bin/env python +""" +Add or Modify a User info in DIRAC +Usage: + dirac-admin-add-user [options] ... Property= ... + +Arguments: + Property=: Properties to be added to the User like (Phone=XXXX) + +Example: + $ dirac-admin-add-user -N vhamar -D /O=GRID/C=FR/O=CNRS/OU=CPPM/CN=Vanessa Hamar -M hamar@cppm.in2p3.fr -G dirac_user +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function @@ -54,12 +65,6 @@ def main(): global userDN global userMail global userGroups - Script.setUsageMessage('\n'.join(['Add or Modify a User info in DIRAC', - 'Usage:', - ' %s [option|cfgfile] ... Property= ...' % Script.scriptName, - 'Arguments:', - ' Property=: Properties to be added to the User like (Phone=XXXX)', ])) - Script.registerSwitch('N:', 'UserName:', 'Short Name of the User (Mandatory)', setUserName) Script.registerSwitch('D:', 'UserDN:', 'DN of the User Certificate (Mandatory)', setUserDN) Script.registerSwitch('M:', 'UserMail:', 'eMail of the user (Mandatory)', setUserMail) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py b/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py index 1be789f6094..4b5b07fa195 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py @@ -4,7 +4,17 @@ # Author : Stuart Paterson ######################################################################## """ - Add Site to Active mask for current Setup +Add Site to Active mask for current Setup + +Usage: + dirac-admin-allow-site [options] ... Site Comment + +Arguments: + Site: Name of the Site + Comment: Reason of the action + +Example: + $ dirac-admin-allow-site LCG.IN2P3.fr "FRANCE" """ from __future__ import print_function from __future__ import absolute_import @@ -21,12 +31,6 @@ @DIRACScript() def main(): Script.registerSwitch("E:", "email=", "Boolean True/False (True by default)") - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... Site Comment' % Script.scriptName, - 'Arguments:', - ' Site: Name of the Site', - ' Comment: Reason of the action'])) Script.parseCommandLine(ignoreErrors=True) from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py b/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py index 55217e3a78d..7d905f84a2d 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py @@ -4,7 +4,17 @@ # Author : Stuart Paterson ######################################################################## """ - Remove Site from Active mask for current Setup +Remove Site from Active mask for current Setup + +Usage: + dirac-admin-ban-site [options] ... Site Comment + +Arguments: + Site: Name of the Site + Comment: Reason of the action + +Example: + $ dirac-admin-ban-site LCG.IN2P3.fr "Pilot installation problems" """ from __future__ import print_function from __future__ import absolute_import @@ -14,7 +24,6 @@ import time -from DIRAC import exit as DIRACExit, gConfig, gLogger from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -22,17 +31,12 @@ @DIRACScript() def main(): Script.registerSwitch("E:", "email=", "Boolean True/False (True by default)") - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... Site Comment' % Script.scriptName, - 'Arguments:', - ' Site: Name of the Site', - ' Comment: Reason of the action'])) Script.parseCommandLine(ignoreErrors=True) - from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations + from DIRAC import exit as DIRACExit, gConfig, gLogger from DIRAC.Core.Utilities.PromptUser import promptUser from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin + from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations def getBoolean(value): if value.lower() == 'true': diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py b/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py index 3b094358a09..02b689f61ab 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py @@ -4,31 +4,36 @@ # Author : Vladimir Romanovsky ######################################################################## """ - Retrieve Site Associated to a given CE +Retrieve Site Associated to a given CE + +Usage: + dirac-admin-ce-info [options] ... CE ... + +Arguments: + CE: Name of the CE (mandatory) + +Example: + $ dirac-admin-ce-info LCG.IN2P3.fr """ from __future__ import print_function from __future__ import absolute_import from __future__ import division + __RCSID__ = "$Id$" from DIRAC import gConfig, gLogger, exit as Dexit from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript -from DIRAC.ConfigurationSystem.Client.Helpers.Resources import getCESiteMapping -from DIRAC.ConfigurationSystem.Client.Helpers import cfgPath @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... CE ...' % Script.scriptName, - 'Arguments:', - ' CE: Name of the CE (mandatory)'])) - Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() + from DIRAC.ConfigurationSystem.Client.Helpers import cfgPath + from DIRAC.ConfigurationSystem.Client.Helpers.Resources import getCESiteMapping + if len(args) < 1: Script.showHelp(exitCode=1) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py b/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py index 63bf73e55c3..da708c12bbe 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py @@ -4,11 +4,21 @@ # Author : Adrian Casajus ######################################################################## """ - Remove User from Configuration +Remove User from Configuration + +Usage: + dirac-admin-delete-user [options] ... User ... + +Arguments: + User: User name + +Example: + $ dirac-admin-delete-user vhamar """ from __future__ import print_function from __future__ import absolute_import from __future__ import division + __RCSID__ = "$Id$" from DIRAC.Core.Base import Script @@ -17,11 +27,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... User ...' % Script.scriptName, - 'Arguments:', - ' User: User name'])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_get_banned_sites.py b/src/DIRAC/Interfaces/scripts/dirac_admin_get_banned_sites.py index d3b5ab5e1f1..c98ceee2708 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_banned_sites.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_banned_sites.py @@ -3,7 +3,14 @@ # File : dirac-admin-get-banned-sites # Author : Stuart Paterson ######################################################################## - +""" +Usage: + dirac-admin-get-banned-sites [options] ... + +Example: + $ dirac-admin-get-banned-sites + LCG.IN2P3.fr Site not present in logging table +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_get_job_pilot_output.py b/src/DIRAC/Interfaces/scripts/dirac_admin_get_job_pilot_output.py index 6c0883599cf..25378c6f547 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_job_pilot_output.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_job_pilot_output.py @@ -4,11 +4,21 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve the output of the pilot that executed a given job +Retrieve the output of the pilot that executed a given job + +Usage: + dirac-admin-get-job-pilot-output [options] ... JobID ... + +Arguments: + JobID: DIRAC ID of the Job + +Example: + $ dirac-admin-get-job-pilot-output 34 """ from __future__ import print_function from __future__ import absolute_import from __future__ import division + __RCSID__ = "$Id$" from DIRAC.Core.Base import Script @@ -17,11 +27,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... JobID ...' % Script.scriptName, - 'Arguments:', - ' JobID: DIRAC ID of the Job'])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_get_job_pilots.py b/src/DIRAC/Interfaces/scripts/dirac_admin_get_job_pilots.py index 1148123c886..d475fd5a054 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_job_pilots.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_job_pilots.py @@ -4,26 +4,48 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve info about pilots that have matched a given Job +Retrieve info about pilots that have matched a given Job + +Usage: + dirac-admin-get-job-pilots [options] ... JobID + +Arguments: + JobID: DIRAC ID of the Job + +Example: + $ dirac-admin-get-job-pilots 1848 + {'https://marlb.in2p3.fr:9000/bqYViq6KrVgGfr6wwgT45Q': {'AccountingSent': 'False', + 'BenchMark': 8.1799999999999997, + 'Broker': 'marwms.in2p3.fr', + 'DestinationSite': 'lpsc-ce.in2p3.fr', + 'GridSite': 'LCG.LPSC.fr', + 'GridType': 'gLite', + 'Jobs': [1848L], + 'LastUpdateTime': datetime.datetime(2011, 2, 21, 12, 39, 10), + 'OutputReady': 'True', + 'OwnerDN': '/O=GRID/C=FR/O=CNRS/OU=LPC/CN=Sebastien Guizard', + 'OwnerGroup': '/biomed', + 'ParentID': 0L, + 'PilotID': 2247L, + 'PilotJobReference': 'https://marlb.in2p3.fr:9000/biq6KT45Q', + 'PilotStamp': '', + 'Status': 'Done', + 'SubmissionTime': datetime.datetime(2011, 2, 21, 12, 27, 52), + 'TaskQueueID': 399L}} """ from __future__ import print_function from __future__ import absolute_import from __future__ import division + __RCSID__ = "$Id$" # pylint: disable=wrong-import-position - from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... JobID' % Script.scriptName, - 'Arguments:', - ' JobID: DIRAC ID of the Job'])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_info.py b/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_info.py index b757719da57..14ca628bd9c 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_info.py @@ -1,19 +1,44 @@ #!/usr/bin/env python ######################################################################## -# File : dirac-admin-get-pilot-output +# File : dirac-admin-get-pilot-info # Author : Ricardo Graciani ######################################################################## """ - Retrieve available info about the given pilot +Retrieve available info about the given pilot + +Usage: + dirac-admin-get-pilot-info [options] ... PilotID ... + +Arguments: + PilotID: Grid ID of the pilot + +Example: + $ dirac-admin-get-pilot-info https://marlb.in2p3.fr:9000/26KCLKBFtxXKHF4_ZrQjkw + {'https://marlb.in2p3.fr:9000/26KCLKBFtxXKHF4_ZrQjkw': {'AccountingSent': 'False', + 'BenchMark': 0.0, + 'Broker': 'marwms.in2p3.fr', + 'DestinationSite': 'cclcgceli01.in2p3.fr', + 'GridSite': 'LCG.IN2P3.fr', + 'GridType': 'gLite', + 'LastUpdateTime': datetime.datetime(2011, 2, 21, 12, 49, 14), + 'OutputReady': 'False', + 'OwnerDN': '/O=GRID/C=FR/O=CNRS/OU=LPC/CN=Sebastien Guizard', + 'OwnerGroup': '/biomed', + 'ParentID': 0L, + 'PilotID': 2241L, + 'PilotJobReference': 'https://marlb.in2p3.fr:9000/2KHFrQjkw', + 'PilotStamp': '', + 'Status': 'Done', + 'SubmissionTime': datetime.datetime(2011, 2, 21, 12, 27, 52), + 'TaskQueueID': 399L}} """ from __future__ import print_function from __future__ import absolute_import from __future__ import division + __RCSID__ = "$Id$" # pylint: disable=wrong-import-position - -from DIRAC import exit as DIRACExit from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -28,16 +53,12 @@ def setExtendedPrint(_arg): @DIRACScript() def main(): global extendedPrint - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... PilotID ...' % Script.scriptName, - 'Arguments:', - ' PilotID: Grid ID of the pilot'])) Script.registerSwitch('e', 'extended', 'Get extended printout', setExtendedPrint) Script.parseCommandLine(ignoreErrors=True) - from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin + from DIRAC import exit as DIRACExit from DIRAC.Interfaces.API.Dirac import Dirac + from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_logging_info.py b/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_logging_info.py index 8fe5ae43da8..1c373499cf7 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_logging_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_logging_info.py @@ -4,27 +4,46 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve logging info of a Grid pilot -""" +Retrieve logging info of a Grid pilot + +Usage: + dirac-admin-get-pilot-logging-info [options] ... PilotID ... + +Arguments: + PilotID: Grid ID of the pilot +Example: + $ dirac-admin-get-pilot-logging-info https://marlb.in2p3.fr:9000/26KCLKBFtxXKHF4_ZrQjkw + Pilot Reference: dirac-admin-get-pilot-logging-info https://marlb.in2p3.fr:9000/26KCLKBFtxXKHF4_ZrQjkw + ===================== glite-job-logging-info Success ===================== + LOGGING INFORMATION: + Printing info for the Job : https://marlb.in2p3.fr:9000/26KCLKBFtxXKHF4_ZrQjkw + --- + Event: RegJob + - Arrived = Mon Feb 21 13:27:50 2011 CET + - Host = marwms.in2p3.fr + - Jobtype = SIMPLE + - Level = SYSTEM + - Ns = https://marwms.in2p3.fr:7443/glite_wms_wmproxy_server + - Nsubjobs = 0 + - Parent = https://marlb.in2p3.fr:9000/WQHVOB1mI4oqrlYz2ZKtgA + - Priority = asynchronous + - Seqcode = UI=000000:NS=0000000001:WM=000000:BH=0000000000:JSS=000000:LM=000000:LRMS=000000:APP=000000:LBS=000000 + - Source = NetworkServer +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division + __RCSID__ = "$Id$" # pylint: disable=wrong-import-position - from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... PilotID ...' % Script.scriptName, - 'Arguments:', - ' PilotID: Grid ID of the pilot'])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_output.py b/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_output.py index 40ecb1b72c8..d0acbbe2840 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_output.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_output.py @@ -4,11 +4,23 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve output of a Grid pilot +Retrieve output of a Grid pilot + +Usage: + dirac-admin-get-pilot-output [options] ... PilotID ... + +Arguments: + PilotID: Grid ID of the pilot + +Example: + $ dirac-admin-get-pilot-output https://marlb.in2p3.fr:9000/26KCLKBFtxXKHF4_ZrQjkw + $ ls -la + drwxr-xr-x 2 hamar marseill 2048 Feb 21 14:13 pilot_26KCLKBFtxXKHF4_ZrQjkw """ from __future__ import print_function from __future__ import absolute_import from __future__ import division + __RCSID__ = "$Id$" from DIRAC.Core.Base import Script @@ -17,11 +29,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... PilotID ...' % Script.scriptName, - 'Arguments:', - ' PilotID: Grid ID of the pilot'])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_get_site_mask.py b/src/DIRAC/Interfaces/scripts/dirac_admin_get_site_mask.py index 4713e4e053c..9827aef300c 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_site_mask.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_site_mask.py @@ -3,12 +3,26 @@ # File : dirac-admin-get-site-mask # Author : Stuart Paterson ######################################################################## - +""" +Get the list of sites enabled in the mask for job submission + +Usage: + dirac-admin-get-site-mask [options] + +Example: + $ dirac-admin-get-site-mask + LCG.CGG.fr + LCG.CPPM.fr + LCG.LAPP.fr + LCG.LPSC.fr + LCG.M3PEC.fr + LCG.MSFG.fr +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division -__RCSID__ = "$Id$" +__RCSID__ = "$Id$" from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -16,13 +30,6 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Get the list of sites enabled in the mask for job submission - - Usage: - %s [options] - """ % Script.scriptName) - Script.parseCommandLine(ignoreErrors=True) from DIRAC import exit as DIRACExit, gLogger diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py b/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py index cb34b525f48..13625e47c4c 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py @@ -1,11 +1,21 @@ #!/usr/bin/env python ######################################################################## -# File : dirac-admin-list-users +# File : dirac-admin-list-hosts # Author : Adrian Casajus ######################################################################## +""" +Usage: + dirac-admin-list-hosts [options] ... + +Example: + $ dirac-admin-list-hosts + dirac.in2p3.fr + host-dirac.in2p3.fr +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division + __RCSID__ = "$Id$" from DIRAC.Core.Base import Script diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py b/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py index ff01b65eb04..f8fef046db6 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py @@ -4,13 +4,27 @@ # Author : Adrian Casajus ######################################################################## """ - Lists the users in the Configuration. If no group is specified return all users. +Lists the users in the Configuration. If no group is specified return all users. + +Usage: + dirac-admin-list-users [options] ... [Group] ... + +Arguments: + Group: Only users from this group (default: all) + +Example: + $ dirac-admin-list-users + All users registered: + vhamar + msapunov + atsareg """ from __future__ import print_function from __future__ import absolute_import from __future__ import division + __RCSID__ = "$Id$" -import DIRAC + from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -18,17 +32,13 @@ @DIRACScript() def main(): Script.registerSwitch("e", "extended", "Show extended info") - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... [Group] ...' % Script.scriptName, - 'Arguments:', - ' Group: Only users from this group (default: all)'])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() if len(args) == 0: args = ['all'] + import DIRAC from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() exitCode = 0 diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py b/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py index 259eaf6b253..a0bf48c0bc1 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py @@ -4,7 +4,18 @@ # Author : Adrian Casajus ######################################################################## """ - Modify a user in the CS. +Modify a user in the CS. + +Usage: + dirac-admin-modify-user [options] ... user DN group [group] ... + +Arguments: + user: User name (mandatory) + DN: DN of the User (mandatory) + group: Add the user to the group (mandatory) + +Example: + $ dirac-admin-modify-user vhamar /C=FR/O=Org/CN=User dirac_user """ from __future__ import print_function from __future__ import absolute_import @@ -21,14 +32,6 @@ def main(): Script.registerSwitch("p:", "property=", "Add property to the user =") Script.registerSwitch("f", "force", "create the user if it doesn't exist") - - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... user DN group [group] ...' % Script.scriptName, - 'Arguments:', - ' user: User name (mandatory)', - ' DN: DN of the User (mandatory)', - ' group: Add the user to the group (mandatory)'])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py b/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py index cb82d5540f2..e122ea32ba3 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py @@ -3,14 +3,35 @@ # File : dirac-admin-pilot-summary # Author : Stuart Paterson ######################################################################## - +""" +Usage: + dirac-admin-pilot-summary [options] ... + +Example: + $ dirac-admin-pilot-summary + CE Status Count Status Count Status Count Status Count Status Count Status Count Status Count + sbgce1.in2p3.fr Done 31 + lpsc-ce.in2p3.fr Done 111 + lyogrid2.in2p3.fr Done 81 + egee-ce.jusieu.fr Aborted 81 Done 18 + cclcgce3.in2p3.fr Done 275 + marce01.in2p3.fr Done 156 + node7.datagrid.fr Done 75 + cclcgceli01.fr Aborted 1 Done 235 + ce0.m3pec.u-bo.fr Done 63 + grive11.ibcp.fr Aborted 3 Done 90 + lptace01.msfg.fr Aborted 3 Done 3 Done 90 + ipnls1.in2p3.fr Done 87 + Total Aborted 89 Done 1423 Ready 0 Running 0 Scheduled 0 Submitted 0 Waiting 0 + lappce01.in2p3.fr Aborted 1 Done 111 +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division + __RCSID__ = "$Id$" # pylint: disable=wrong-import-position - import DIRAC from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py b/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py index affbb31801f..9153bf473be 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py @@ -4,7 +4,17 @@ # Author : Stuart Paterson ######################################################################## """ - Reset a job or list of jobs in the WMS +Reset a job or list of jobs in the WMS + +Usage: + dirac-admin-reset-job [options] ... JobID ... + +Arguments: + JobID: DIRAC ID of the Job + +Example: + $ dirac-admin-reset-job 1848 + Reset Job 1848 """ from __future__ import print_function from __future__ import absolute_import @@ -19,11 +29,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... JobID ...' % Script.scriptName, - 'Arguments:', - ' JobID: DIRAC ID of the Job'])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py b/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py index 150215eafa3..c6d9bd30c66 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py @@ -4,7 +4,24 @@ # Author : Stuart Paterson ######################################################################## """ - Print the service ports for the specified setup +Print the service ports for the specified setup + +Usage: + dirac-admin-service-ports [options] ... [Setup] + +Arguments: + Setup: Name of the setup + +Example: + $ dirac-admin-service-ports + {'Framework/ProxyManager': 9152, + 'Framework/SystemAdministrator': 9162, + 'Framework/UserProfileManager': 9155, + 'WorkloadManagement/JobManager': 9132, + 'WorkloadManagement/PilotManager': 9171, + 'WorkloadManagement/Matcher': 9170, + 'WorkloadManagement/SandboxStore': 9196, + 'WorkloadManagement/WMSAdministrator': 9145} """ from __future__ import print_function from __future__ import absolute_import @@ -19,11 +36,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... [Setup]' % Script.scriptName, - 'Arguments:', - ' Setup: Name of the setup'])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_set_site_protocols.py b/src/DIRAC/Interfaces/scripts/dirac_admin_set_site_protocols.py index fdeb0a2a90a..b48ebd359c6 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_set_site_protocols.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_set_site_protocols.py @@ -4,7 +4,16 @@ # Author : Stuart Paterson ######################################################################## """ - Defined protocols for each SE for a given site. +Defined protocols for each SE for a given site. + +Usage: + dirac-admin-set-site-protocols [options] ... Protocol ... + +Arguments: + Protocol: SE access protocol (mandatory) + +Example: + $ dirac-admin-set-site-protocols --Site=LCG.IN2P3.fr SRM2 """ from __future__ import print_function from __future__ import absolute_import @@ -20,11 +29,6 @@ @DIRACScript() def main(): Script.registerSwitch("", "Site=", "Site for which protocols are to be set (mandatory)") - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... Protocol ...' % Script.scriptName, - 'Arguments:', - ' Protocol: SE access protocol (mandatory)'])) Script.parseCommandLine(ignoreErrors=True) site = None diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py b/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py index b632b915d81..d1e914787c5 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py @@ -4,7 +4,22 @@ # Author : Stuart Paterson ######################################################################## """ - Print Configuration information for a given Site +Print Configuration information for a given Site + +Usage: + dirac-admin-site-info [options] ... Site ... + +Arguments: + Site: Name of the Site + +Example: + $ dirac-admin-site-info LCG.IN2P3.fr + {'CE': 'cclcgceli01.in2p3.fr, cclcgceli03.in2p3.fr, sbgce1.in2p3.fr', + 'Coordinates': '4.8655:45.7825', + 'Mail': 'grid.admin@cc.in2p3.fr', + 'MoUTierLevel': '1', + 'Name': 'IN2P3-CC', + 'SE': 'IN2P3-disk, DIRAC-USER'} """ from __future__ import print_function from __future__ import absolute_import @@ -19,11 +34,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... Site ...' % Script.scriptName, - 'Arguments:', - ' Site: Name of the Site'])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_site_mask_logging.py b/src/DIRAC/Interfaces/scripts/dirac_admin_site_mask_logging.py index f70d9566a4e..c3923b3b5cf 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_site_mask_logging.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_site_mask_logging.py @@ -1,16 +1,26 @@ #!/usr/bin/env python -""" - Retrieves site mask logging information. -""" - ######################################################################## # File : dirac-admin-site-mask-logging # Author : Stuart Paterson ######################################################################## +""" +Retrieves site mask logging information. + +Usage: + dirac-admin-site-mask-logging [options] ... Site ... +Arguments: + Site: Name of the Site + +Example: + $ dirac-admin-site-mask-logging LCG.IN2P3.fr + Site Mask Logging Info for LCG.IN2P3.fr + Active 2010-12-08 21:28:16 ( atsareg ) +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division + __RCSID__ = "$Id$" import DIRAC @@ -20,12 +30,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... Site ...' % Script.scriptName, - 'Arguments:', - ' Site: Name of the Site'])) - Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_sync_users_from_file.py b/src/DIRAC/Interfaces/scripts/dirac_admin_sync_users_from_file.py index 4640befe3c0..63b3dd995ab 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_sync_users_from_file.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_sync_users_from_file.py @@ -4,7 +4,16 @@ # Author : Adrian Casajus ######################################################################## """ - Sync users in Configuration with the cfg contents. +Sync users in Configuration with the cfg contents. + +Usage: + dirac-admin-sync-users-from-file [options] ... UserCfg + +Arguments: + UserCfg: Cfg FileName with Users as sections containing DN, Groups, and other properties as options + +Example: + $ dirac-admin-sync-users-from-file file_users.cfg """ from __future__ import print_function from __future__ import absolute_import @@ -21,14 +30,6 @@ @DIRACScript() def main(): Script.registerSwitch("t", "test", "Only test. Don't commit changes") - Script.setUsageMessage('\n'.join([ - __doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... UserCfg' % - Script.scriptName, - 'Arguments:', - ' UserCfg: Cfg FileName with Users as sections containing DN, Groups, and other properties as options' - ])) Script.parseCommandLine(ignoreErrors=True) args = Script.getExtraCLICFGFiles() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py b/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py index 735d546353c..658698562c7 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py @@ -4,7 +4,18 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve a single file or list of files from Grid storage to the current directory. +Retrieve a single file or list of files from Grid storage to the current directory. + +Usage: + dirac-dms-get-file [options] ... LFN ... + +Arguments: + LFN: Logical File Name or file containing LFNs + +Example: + $ dirac-dms-get-file /formation/user/v/vhamar/Example.txt + {'Failed': {}, + 'Successful': {'/formation/user/v/vhamar/Example.txt': '/afs/in2p3.fr/home/h/hamar/Tests/DMS/Example.txt'}} """ from __future__ import print_function from __future__ import absolute_import @@ -19,11 +30,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... LFN ...' % Script.scriptName, - 'Arguments:', - ' LFN: Logical File Name or file containing LFNs'])) Script.parseCommandLine(ignoreErrors=True) lfns = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py index 289f881a11c..b4eec0e53a1 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py @@ -4,7 +4,21 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve an access URL for an LFN replica given a valid DIRAC SE. +Retrieve an access URL for an LFN replica given a valid DIRAC SE. + +Usage: + dirac-dms-lfn-accessURL [options] ... LFN SE [PROTO] + +Arguments: + LFN: Logical File Name or file containing LFNs (mandatory) + SE: Valid DIRAC SE (mandatory) + PROTO: Optional protocol for accessURL + +Example: + $ dirac-dms-lfn-accessURL /formation/user/v/vhamar/Example.txt DIRAC-USER + {'Failed': {}, + 'Successful': {'/formation/user/v/vhamar/Example.txt': 'dips://dirac.in2p3.fr:9148/DataManagement/StorageElement\ + /formation/user/v/vhamar/Example.txt'}} """ from __future__ import print_function from __future__ import absolute_import @@ -19,13 +33,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... LFN SE [PROTO]' % Script.scriptName, - 'Arguments:', - ' LFN: Logical File Name or file containing LFNs (mandatory)', - ' SE: Valid DIRAC SE (mandatory)', - ' PROTO: Optional protocol for accessURL'])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py index 39e534022c6..3a8f5ee216e 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py @@ -4,7 +4,30 @@ # Author : Stuart Paterson ######################################################################## """ - Obtain replica metadata from file catalogue client. +Obtain replica metadata from file catalogue client. + +Usage: + dirac-dms-lfn-metadata [options] ... LFN ... + +Arguments: + LFN: Logical File Name or file containing LFNs + +Example: + $ dirac-dms-lfn-metadata /formation/user/v/vhamar/test.txt + {'Failed': {}, + 'Successful': {'/formation/user/v/vhamar/test.txt': {'Checksum': 'eed20d47', + 'ChecksumType': 'Adler32', + 'CreationDate': datetime.datetime(2011, 2, 11, 14, 52, 47), + 'FileID': 250L, + 'GID': 2, + 'GUID': 'EDE6DDA4-3344-3F39-A993-8349BA41EB23', + 'Mode': 509, + 'ModificationDate': datetime.datetime(2011, 2, 11, 14, 52, 47), + 'Owner': 'vhamar', + 'OwnerGroup': 'dirac_user', + 'Size': 34L, + 'Status': 1, + 'UID': 2}}} """ from __future__ import print_function from __future__ import absolute_import @@ -19,11 +42,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... LFN ...' % Script.scriptName, - 'Arguments:', - ' LFN: Logical File Name or file containing LFNs'])) Script.parseCommandLine(ignoreErrors=True) lfns = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py index 1e4f142f200..2ca00d0d511 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py @@ -4,7 +4,19 @@ # Author : Stuart Paterson ######################################################################## """ - Obtain replica information from file catalogue client. +Obtain replica information from file catalogue client. + +Usage: + dirac-admin-lfn-replicas [options] ... LFN ... + +Arguments: + LFN: Logical File Name or file containing LFNs + +Example: + $ dirac-dms-lfn-replicas /formation/user/v/vhamar/Test.txt + {'Failed': {}, + 'Successful': {'/formation/user/v/vhamar/Test.txt':\ + {'M3PEC-disk': 'srm://se0.m3pec.u-bordeaux1.fr/dpm/m3pec.u-bordeaux1.fr/home/formation/user/v/vhamar/Test.txt'}}} """ from __future__ import print_function from __future__ import absolute_import @@ -20,11 +32,6 @@ @DIRACScript() def main(): Script.registerSwitch('a', "All", " Also show inactive replicas") - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... LFN ...' % Script.scriptName, - 'Arguments:', - ' LFN: Logical File Name or file containing LFNs'])) Script.parseCommandLine(ignoreErrors=True) lfns = Script.getPositionalArgs() switches = Script.getUnprocessedSwitches() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py index dce18d093bb..7c6046d3a64 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py @@ -4,7 +4,14 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve an access URL for a PFN given a valid DIRAC SE +Retrieve an access URL for a PFN given a valid DIRAC SE + +Usage: + dirac-dms-pfn-accessURL [options] ... PFN SE + +Arguments: + PFN: Physical File Name or file containing PFNs (mandatory) + SE: Valid DIRAC SE (mandatory) """ from __future__ import print_function from __future__ import absolute_import @@ -19,12 +26,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... PFN SE' % Script.scriptName, - 'Arguments:', - ' PFN: Physical File Name or file containing PFNs (mandatory)', - ' SE: Valid DIRAC SE (mandatory)'])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py index db31f525148..26f2a7d65c4 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py @@ -4,7 +4,14 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve metadata for a PFN given a valid DIRAC SE +Retrieve metadata for a PFN given a valid DIRAC SE + +Usage: + dirac-dms-pfn-metadata [options] ... PFN SE + +Arguments: + PFN: Physical File Name or file containing PFNs (mandatory) + SE: Valid DIRAC SE (mandatory) """ from __future__ import print_function from __future__ import absolute_import @@ -19,12 +26,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... PFN SE' % Script.scriptName, - 'Arguments:', - ' PFN: Physical File Name or file containing PFNs (mandatory)', - ' SE: Valid DIRAC SE (mandatory)'])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py b/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py index ac6cd2c2ae3..e9895ef6e25 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py @@ -4,7 +4,22 @@ # Author : Stuart Paterson ######################################################################## """ - Replicate an existing LFN to another Storage Element +Replicate an existing LFN to another Storage Element + +Usage: + dirac-dms-replicate-lfn [options] ... LFN Dest [Source [Cache]] + +Arguments: + LFN: Logical File Name or file containing LFNs (mandatory) + Dest: Valid DIRAC SE (mandatory) + Source: Valid DIRAC SE + Cache: Local directory to be used as cache + +Example: + $ dirac-dms-replicate-lfn /formation/user/v/vhamar/Test.txt DIRAC-USER + {'Failed': {}, + 'Successful': {'/formation/user/v/vhamar/Test.txt': {'register': 0.50833415985107422, + 'replicate': 11.878520965576172}}} """ from __future__ import print_function from __future__ import absolute_import @@ -19,14 +34,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... LFN Dest [Source [Cache]]' % Script.scriptName, - 'Arguments:', - ' LFN: Logical File Name or file containing LFNs (mandatory)', - ' Dest: Valid DIRAC SE (mandatory)', - ' Source: Valid DIRAC SE', - ' Cache: Local directory to be used as cache'])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py b/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py index 2e3184ad3c5..dfdf54f5749 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py +++ b/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py @@ -4,7 +4,39 @@ # Author : Stuart Paterson ######################################################################## """ - Ping the given DIRAC Service +Ping the given DIRAC Service + +Usage: + dirac-framework-ping-service [options] ... System Service|System/Agent + +Arguments: + System: Name of the DIRAC system (ie: WorkloadManagement) + Service: Name of the DIRAC service (ie: Matcher) + url: URL of the service to ping (instead of System and Service) + +Example: + $ dirac-framework-ping-service WorkloadManagement PilotManager + {'OK': True, + 'Value': {'cpu times': {'children system time': 0.0, + 'children user time': 0.0, + 'elapsed real time': 8778481.7200000007, + 'system time': 54.859999999999999, + 'user time': 361.06999999999999}, + 'host uptime': 4485212L, + 'load': '3.44 3.90 4.02', + 'name': 'WorkloadManagement/PilotManager', + 'service start time': datetime.datetime(2011, 2, 21, 8, 58, 35, 521438), + 'service uptime': 85744, + 'service url': 'dips://dirac.in2p3.fr:9171/WorkloadManagement/PilotManager', + 'time': datetime.datetime(2011, 3, 14, 11, 47, 40, 394957), + 'version': 'v5r12-pre9'}, + 'rpcStub': (('WorkloadManagement/PilotManager', + {'delegatedDN': '/O=GRID-FR/C=FR/O=CNRS/OU=CPPM/CN=Vanessa Hamar', + 'delegatedGroup': 'dirac_user', + 'skipCACheck': True, + 'timeout': 120}), + 'ping', + ())} """ from __future__ import print_function from __future__ import absolute_import @@ -19,13 +51,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... System Service|System/Agent' % Script.scriptName, - 'Arguments:', - ' System: Name of the DIRAC system (ie: WorkloadManagement) (mandatory)', - ' Service: Name of the DIRAC service (ie: Matcher) (mandatory)', - ' url: URL of the service to ping (instead of System and Service)'])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() system = None diff --git a/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py b/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py index 613b6342084..ea0ee9c8603 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py +++ b/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py @@ -30,10 +30,7 @@ def main(): rpc = RPCClient('dips://localhost:%s' % sys.argv[1]) res = rpc.ping() time.sleep(0.1) - if not res['OK']: - sys.exit(1) - else: - sys.exit(0) + sys.exit(0 if res['OK'] else 1) if __name__ == "__main__": diff --git a/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py b/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py index 1804946127f..67d26767bfb 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py +++ b/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py @@ -1,6 +1,12 @@ #!/usr/bin/env python """ - Monitor the jobs present in the repository +Monitor the jobs present in the repository + +Usage: + dirac-repo-monitor [options] ... RepoDir + +Arguments: + RepoDir: Location of Job Repository """ from __future__ import print_function from __future__ import absolute_import @@ -15,11 +21,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... RepoDir' % Script.scriptName, - 'Arguments:', - ' RepoDir: Location of Job Repository'])) Script.parseCommandLine(ignoreErrors=False) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py b/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py index 620fe5b2ff2..c89e80dec2e 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py +++ b/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py @@ -3,7 +3,17 @@ # File : dirac-utils-file-adler ######################################################################## """ - Calculate alder32 of the supplied file +Calculate alder32 of the supplied file + +Usage: + dirac-utils-file-adler [options] ... File ... + +Arguments: + File: File Name + +Example: + $ dirac-utils-file-adler Example.tgz + Example.tgz 88b4ca8b """ from __future__ import print_function from __future__ import absolute_import @@ -11,19 +21,12 @@ __RCSID__ = "$Id$" -import DIRAC -from DIRAC.Core.Utilities.Adler import fileAdler from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... File ...' % Script.scriptName, - 'Arguments:', - ' File: File Name'])) Script.parseCommandLine(ignoreErrors=False) files = Script.getPositionalArgs() if len(files) == 0: @@ -31,6 +34,9 @@ def main(): exitCode = 0 + import DIRAC + from DIRAC.Core.Utilities.Adler import fileAdler + for fa in files: adler = fileAdler(fa) if adler: diff --git a/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py b/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py index cdb70483909..36785a6061b 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py +++ b/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py @@ -1,10 +1,20 @@ #!/usr/bin/env python ######################################################################## -# File : dirac-utils-file-adler +# File : dirac-utils-file-md5 # Author : ######################################################################## """ - Calculate md5 of the supplied file +Calculate md5 of the supplied file + +Usage: + dirac-utils-file-md5 [options] ... File ... + +Arguments: + File: File Name + +Example: + $ dirac-utils-file-md5 Example.tgz + Example.tgz 5C1A1102-EAFD-2CBA-25BD-0EFCCFC3623E """ from __future__ import print_function from __future__ import absolute_import @@ -12,19 +22,12 @@ __RCSID__ = "$Id$" -import DIRAC -from DIRAC.Core.Utilities.File import makeGuid from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... File ...' % Script.scriptName, - 'Arguments:', - ' File: File Name'])) Script.parseCommandLine(ignoreErrors=False) files = Script.getPositionalArgs() if len(files) == 0: @@ -32,6 +35,9 @@ def main(): exitCode = 0 + import DIRAC + from DIRAC.Core.Utilities.File import makeGuid + for file in files: try: md5 = makeGuid(file) diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_get_normalized_queue_length.py b/src/DIRAC/Interfaces/scripts/dirac_wms_get_normalized_queue_length.py index 72a42c1799d..bbca4d98016 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_get_normalized_queue_length.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_get_normalized_queue_length.py @@ -4,10 +4,20 @@ # Author : Ricardo Graciani ######################################################################## """ - Report Normalized CPU length of queue +Report Normalized CPU length of queue - This script was used by the dirac-pilot script to set the CPUTime limit for - the matching but now this is no more the case. +This script was used by the dirac-pilot script to set the CPUTime limit for +the matching but now this is no more the case. + +Usage: + dirac-wms-get-normalized-queue-length [options] ... Queue ... + +Arguments: + Queue: GlueCEUniqueID of the Queue (ie, juk.nikhef.nl:8443/cream-pbs-lhcb) + +Example: + $ dirac-wms-get-normalized-queue-length cclcgceli03.in2p3.fr:2119/jobmanager-bqs-long + cclcgceli03.in2p3.fr:2119/jobmanager-bqs-long 857400.0 """ from __future__ import print_function from __future__ import absolute_import @@ -23,13 +33,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([ - __doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... Queue ...' % Script.scriptName, - 'Arguments:', - ' Queue: GlueCEUniqueID of the Queue (ie, juk.nikhef.nl:8443/cream-pbs-lhcb)' - ])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_get_queue_normalization.py b/src/DIRAC/Interfaces/scripts/dirac_wms_get_queue_normalization.py index 4a3e2f4627a..1fb3654c447 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_get_queue_normalization.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_get_queue_normalization.py @@ -4,7 +4,17 @@ # Author : Ricardo Graciani ######################################################################## """ - Report Normalization Factor applied by Site to the given Queue +Report Normalization Factor applied by Site to the given Queue + +Usage: + dirac-wms-get-queue-normalization [options] ... Queue ... + +Arguments: + Queue: GlueCEUniqueID of the Queue (ie, juk.nikhef.nl:8443/cream-pbs-lhcb) + +Example: + $ dirac-wms-get-queue-normalization cclcgceli03.in2p3.fr:2119/jobmanager-bqs-long + cclcgceli03.in2p3.fr:2119/jobmanager-bqs-long 2500.0 """ from __future__ import print_function from __future__ import absolute_import @@ -12,21 +22,12 @@ __RCSID__ = "$Id$" -import DIRAC from DIRAC.Core.Base import Script -from DIRAC.WorkloadManagementSystem.Client.CPUNormalization import getQueueNormalization from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([ - __doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... Queue ...' % Script.scriptName, - 'Arguments:', - ' Queue: GlueCEUniqueID of the Queue (ie, juk.nikhef.nl:8443/cream-pbs-lhcb)', - ])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() @@ -35,6 +36,9 @@ def main(): exitCode = 0 + import DIRAC + from DIRAC.WorkloadManagementSystem.Client.CPUNormalization import getQueueNormalization + for ceUniqueID in args: cpuNorm = getQueueNormalization(ceUniqueID) diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py index 89fdf413266..6f7f5247c98 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py @@ -4,7 +4,50 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve attributes associated with the given DIRAC job +Retrieve attributes associated with the given DIRAC job + +Usage: + dirac-wms-job-attributes [options] ... JobID ... + +Arguments: + JobID: DIRAC Job ID + +Example: + $ dirac-wms-job-attributes 1 + {'AccountedFlag': 'False', + 'ApplicationNumStatus': '0', + 'ApplicationStatus': 'Unknown', + 'CPUTime': '0.0', + 'DIRACSetup': 'EELA-Production', + 'DeletedFlag': 'False', + 'EndExecTime': '2011-02-14 11:28:01', + 'FailedFlag': 'False', + 'HeartBeatTime': '2011-02-14 11:28:01', + 'ISandboxReadyFlag': 'False', + 'JobGroup': 'NoGroup', + 'JobID': '1', + 'JobName': 'DIRAC_vhamar_602138', + 'JobSplitType': 'Single', + 'JobType': 'normal', + 'KilledFlag': 'False', + 'LastUpdateTime': '2011-02-14 11:28:11', + 'MasterJobID': '0', + 'MinorStatus': 'Execution Complete', + 'OSandboxReadyFlag': 'False', + 'Owner': 'vhamar', + 'OwnerDN': '/O=GRID-FR/C=FR/O=CNRS/OU=CPPM/CN=Vanessa Hamar', + 'OwnerGroup': 'eela_user', + 'RescheduleCounter': '0', + 'RescheduleTime': 'None', + 'RetrievedFlag': 'False', + 'RunNumber': '0', + 'Site': 'EELA.UTFSM.cl', + 'StartExecTime': '2011-02-14 11:27:48', + 'Status': 'Done', + 'SubmissionTime': '2011-02-14 10:12:40', + 'SystemPriority': '0', + 'UserPriority': '1', + 'VerifiedFlag': 'True'} """ from __future__ import print_function from __future__ import absolute_import @@ -19,11 +62,6 @@ @DIRACScript() def main(): - 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() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py index 7f69e3a538a..eaecd5fc11d 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py @@ -5,8 +5,17 @@ ######################################################################## """ Delete DIRAC job from WMS, if running it will be killed -""" +Usage: + dirac-wms-job-delete [options] ... JobID ... + +Arguments: + JobID: DIRAC Job ID + +Example: + $ dirac-wms-job-delete 12 + Deleted job 12 +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division @@ -15,25 +24,19 @@ import os.path -import DIRAC from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... JobID ...' % Script.scriptName, - 'Arguments:', - ' JobID: DIRAC Job ID'])) - Script.registerSwitch("f:", "File=", "Get output for jobs with IDs from the file") Script.registerSwitch("g:", "JobGroup=", "Get output for jobs in the given group") Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() + import DIRAC from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments from DIRAC.Core.Utilities.Time import toString, date, day dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_input.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_input.py index 3759ac87a2e..a397dd18f0e 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_input.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_input.py @@ -1,10 +1,20 @@ #!/usr/bin/env python ######################################################################## -# File : dirac-production-job-get-input +# File : dirac-wms-job-get-input # Author : Stuart Paterson ######################################################################## """ - Retrieve input sandbox for DIRAC Job +Retrieve input sandbox for DIRAC Job + +Usage: + dirac-wms-job-get-input [options] ... JobID ... + +Arguments: + JobID: DIRAC Job ID + +Example: + $ dirac-wms-job-get-input 13 + Job input sandbox retrieved in InputSandbox13/ """ from __future__ import print_function from __future__ import absolute_import @@ -21,11 +31,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... JobID ...' % Script.scriptName, - 'Arguments:', - ' JobID: DIRAC Job ID'])) Script.registerSwitch("D:", "Dir=", "Store the output in this directory") Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_jdl.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_jdl.py index d655b7a15e2..2eaf412d95f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_jdl.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_jdl.py @@ -4,7 +4,33 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve the current JDL of a DIRAC job +Retrieve the current JDL of a DIRAC job + +Usage: + dirac-wms-job-get-jdl [options] ... JobID ... + +Arguments: + JobID: DIRAC Job ID + +Example: + $ dirac-wms-job-get-jdl 1 + {'Arguments': '-ltrA', + 'CPUTime': '86400', + 'DIRACSetup': 'EELA-Production', + 'Executable': '/bin/ls', + 'JobID': '1', + 'JobName': 'DIRAC_vhamar_602138', + 'JobRequirements': '[OwnerDN = /O=GRID-FR/C=FR/O=CNRS/OU=CPPM/CN=Vanessa Hamar; + OwnerGroup = eela_user; + Setup = EELA-Production; + UserPriority = 1; + CPUTime = 0 ]', + 'OutputSandbox': ['std.out', 'std.err'], + 'Owner': 'vhamar', + 'OwnerDN': '/O=GRID-FR/C=FR/O=CNRS/OU=CPPM/CN=Vanessa Hamar', + 'OwnerGroup': 'eela_user', + 'OwnerName': 'vhamar', + 'Priority': '1'} """ from __future__ import print_function from __future__ import absolute_import @@ -21,11 +47,6 @@ def main(): original = False Script.registerSwitch('O', 'Original', 'Gets the original JDL') - 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() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output.py index 3f860b2031e..eb089ab682f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output.py @@ -4,9 +4,18 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve output sandbox for a DIRAC job -""" +Retrieve output sandbox for a DIRAC job + +Usage: + dirac-wms-job-get-output [options] ... JobID ... + +Arguments: + JobID: DIRAC Job ID or a name of the file with JobID per line +Example: + $ dirac-wms-job-get-output 1 + Job output sandbox retrieved in 1/ +""" from __future__ import print_function from __future__ import absolute_import from __future__ import division @@ -23,12 +32,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... JobID ...' % Script.scriptName, - 'Arguments:', - ' JobID: DIRAC Job ID or a name of the file with JobID per line'])) - Script.registerSwitch("D:", "Dir=", "Store the output in this directory") Script.registerSwitch("f:", "File=", "Get output for jobs with IDs from the file") Script.registerSwitch("g:", "JobGroup=", "Get output for jobs in the given group") diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output_data.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output_data.py index 60d79d8c88c..3535feae921 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output_data.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output_data.py @@ -4,7 +4,13 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve the output data files of a DIRAC job +Retrieve the output data files of a DIRAC job + +Usage: + dirac-wms-job-get-output-data [options] ... JobID ... + +Arguments: + JobID: DIRAC Job ID """ from __future__ import print_function from __future__ import absolute_import @@ -19,11 +25,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... JobID ...' % Script.scriptName, - 'Arguments:', - ' JobID: DIRAC Job ID'])) Script.registerSwitch("D:", "Dir=", "Store the output in this directory") Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py index e5ce171f569..e18bbf15911 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py @@ -1,10 +1,32 @@ #!/usr/bin/env python ######################################################################## -# File : dirac-wms-job-kil +# File : dirac-wms-job-kill # Author : Stuart Paterson ######################################################################## """ - Issue a kill signal to a running DIRAC job +Issue a kill signal to a running DIRAC job + +Usage: + dirac-wms-job-kill [options] ... JobID ... + +Arguments: + JobID: DIRAC Job ID + +Example: + $ dirac-wms-job-kill 1918 + Killed job 1918 + +.. Note:: + + - jobs will not disappear from JobDB until JobCleaningAgent has deleted them + - jobs will be deleted "immediately" if they are in the status 'Deleted' + - USER jobs will be deleted after a grace period if they are in status Killed, Failed, Done + + What happens when you hit the "kill job" button + + - if the job is in status 'Running', 'Matched', 'Stalled' it will be properly killed, and then its + status will be marked as 'Killed' + - otherwise, it will be marked directly as 'Killed'. """ from __future__ import print_function from __future__ import absolute_import @@ -19,11 +41,6 @@ @DIRACScript() def main(): - 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() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_logging_info.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_logging_info.py index 581b0dd882f..9b3d40647ac 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_logging_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_logging_info.py @@ -4,7 +4,31 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve history of transitions for a DIRAC job +Retrieve history of transitions for a DIRAC job + +Usage: + dirac-wms-job-logging-info [options] ... JobID ... + +Arguments: + JobID: DIRAC Job ID + +Example: + $ dirac-wms-job-logging-info 1 + Status MinorStatus ApplicationStatus DateTime + Received Job accepted Unknown 2011-02-14 10:12:40 + Received False Unknown 2011-02-14 11:03:12 + Checking JobSanity Unknown 2011-02-14 11:03:12 + Checking JobScheduling Unknown 2011-02-14 11:03:12 + Waiting Pilot Agent Submission Unknown 2011-02-14 11:03:12 + Matched Assigned Unknown 2011-02-14 11:27:17 + Matched Job Received by Agent Unknown 2011-02-14 11:27:27 + Matched Submitted To CE Unknown 2011-02-14 11:27:38 + Running Job Initialization Unknown 2011-02-14 11:27:42 + Running Application Unknown 2011-02-14 11:27:48 + Completed Application Finished Successfully Unknown 2011-02-14 11:28:01 + Completed Uploading Output Sandbox Unknown 2011-02-14 11:28:04 + Completed Output Sandbox Uploaded Unknown 2011-02-14 11:28:07 + Done Execution Complete Unknown 2011-02-14 11:28:07 """ from __future__ import print_function from __future__ import absolute_import @@ -19,11 +43,6 @@ @DIRACScript() def main(): - 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() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py index 938abf9eeaa..4ba772412f3 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py @@ -4,7 +4,39 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve parameters associated to the given DIRAC job +Retrieve parameters associated to the given DIRAC job + +Usage: + dirac-wms-job-parameters [options] ... JobID ... + +Arguments: + JobID: DIRAC Job ID + +Example: + $ dirac-wms-job-parameters 1 + {'CPU(MHz)': '1596.479', + 'CPUNormalizationFactor': '6.8', + 'CPUScalingFactor': '6.8', + 'CacheSize(kB)': '4096KB', + 'GridCEQueue': 'ce.labmc.inf.utfsm.cl:2119/jobmanager-lcgpbs-prod', + 'HostName': 'wn05.labmc', + 'JobPath': 'JobPath,JobSanity,JobScheduling,TaskQueue', + 'JobSanityCheck': 'Job: 1 JDL: OK,InputData: No input LFNs, Input Sandboxes: 0, OK.', + 'JobWrapperPID': '599', + 'LocalAccount': 'prod006', + 'LocalBatchID': '', + 'LocalJobID': '277821.ce.labmc.inf.utfsm.cl', + 'MatcherServiceTime': '2.27646398544', + 'Memory(kB)': '858540kB', + 'ModelName': 'Intel(R)Xeon(R)CPU5110@1.60GHz', + 'NormCPUTime(s)': '1.02', + 'OK': 'True', + 'OutputSandboxMissingFiles': 'std.err', + 'PayloadPID': '604', + 'PilotAgent': 'EELADIRAC v1r1; DIRAC v5r12', + 'Pilot_Reference': 'https://lb2.eela.ufrj.br:9000/ktM6WWR1GdkOTm98_hwM9Q', + 'ScaledCPUTime': '115.6', + 'TotalCPUTime(s)': '0.15'} """ from __future__ import print_function @@ -22,11 +54,6 @@ @DIRACScript() def main(): - 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() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py index fe7b6dd3d93..8844a8ba45b 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py @@ -4,7 +4,16 @@ # Author : Stuart Paterson ######################################################################## """ - Peek StdOut of the given DIRAC job +Peek StdOut of the given DIRAC job + +Usage: + dirac-wms-job-delete [options] ... JobID ... + +Arguments: + JobID: DIRAC Job ID + +Example: + $ dirac-wms-job-peek 1 """ from __future__ import print_function from __future__ import absolute_import @@ -19,11 +28,6 @@ @DIRACScript() def main(): - 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() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py index 40483652e07..376c063416d 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py @@ -1,10 +1,20 @@ #!/usr/bin/env python ######################################################################## -# File : dirac-wms-job-delete +# File : dirac-wms-job-reschedule # Author : Stuart Paterson ######################################################################## """ - Reschedule the given DIRAC job +Reschedule the given DIRAC job + +Usage: + dirac-wms-job-reschedule [options] ... JobID ... + +Arguments: + JobID: DIRAC Job ID + +Example: + $ dirac-wms-job-reschedule 1 + Rescheduled job 1 """ from __future__ import print_function from __future__ import absolute_import @@ -19,11 +29,6 @@ @DIRACScript() def main(): - 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() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py index 1cbb2f53070..043eb835802 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py @@ -4,7 +4,17 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve status of the given DIRAC job +Retrieve status of the given DIRAC job + +Usage: + dirac-wms-job-status [options] ... JobID ... + +Arguments: + JobID: DIRAC Job ID + +Example: + $ dirac-wms-job-status 2 + JobID=2 Status=Done; MinorStatus=Execution Complete; Site=EELA.UTFSM.cl; """ from __future__ import print_function from __future__ import absolute_import @@ -13,28 +23,22 @@ __RCSID__ = "$Id$" import os -import DIRAC -from DIRAC import exit as DIRACExit from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript -from DIRAC.Core.Utilities.Time import toString, date, day @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - '\nUsage:\n', - ' %s [option|cfgfile] ... JobID ...' % Script.scriptName, - '\nArguments:\n', - ' JobID: DIRAC Job ID'])) - Script.registerSwitch("f:", "File=", "Get status for jobs with IDs from the file") Script.registerSwitch("g:", "JobGroup=", "Get status for jobs in the given group") Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() + from DIRAC import exit as DIRACExit + from DIRAC.Core.Utilities.Time import toString, date, day from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments + dirac = Dirac() exitCode = 0 @@ -71,7 +75,7 @@ def main(): exitCode = 2 print("ERROR: %s" % result['Message']) - DIRAC.exit(exitCode) + DIRACExit(exitCode) if __name__ == "__main__": diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py index c5e40fb7284..631bf600086 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py @@ -4,7 +4,17 @@ # Author : Stuart Paterson ######################################################################## """ - Submit jobs to DIRAC WMS +Submit jobs to DIRAC WMS + +Usage: + dirac-wms-job-submit [options] ... JDL ... + +Arguments: + JDL: Path to JDL file + +Example: + $ dirac-wms-job-submit Simple.jdl + JobID = 11 """ from __future__ import print_function from __future__ import absolute_import @@ -21,12 +31,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... JDL ...' % Script.scriptName, - 'Arguments:', - ' JDL: Path to JDL file'])) - Script.registerSwitch("f:", "File=", "Writes job ids to file ") Script.registerSwitch("r:", "UseJobRepo=", "Use the job repository") Script.parseCommandLine(ignoreErrors=True) diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_jobs_select_output_search.py b/src/DIRAC/Interfaces/scripts/dirac_wms_jobs_select_output_search.py index fb6569930c8..3cba594b9de 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_jobs_select_output_search.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_jobs_select_output_search.py @@ -4,7 +4,13 @@ # Author : Vladimir Romanovsky ######################################################################## """ - Retrieve output sandbox for DIRAC Jobs for the given selection and search for a string in their std.out +Retrieve output sandbox for DIRAC Jobs for the given selection and search for a string in their std.out + +Usage: + dirac-wms-jobs-select-output-search [options] ... String ... + +Arguments: + String: string to search for """ from __future__ import print_function from __future__ import absolute_import @@ -30,12 +36,6 @@ def main(): Script.registerSwitch("", "JobGroup=", "Select jobs for specified job group") Script.registerSwitch("", "Date=", "Date in YYYY-MM-DD format, if not specified default is today") Script.registerSwitch("", "File=", "File name,if not specified default is std.out ") - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... String ...' % Script.scriptName, - 'Arguments:', - ' String: string to search for'])) - Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py b/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py index ac9f9199a2f..81174f533e0 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py @@ -4,11 +4,18 @@ # Author : Stuart Paterson ######################################################################## """ - Select DIRAC jobs matching the given conditions +Select DIRAC jobs matching the given conditions + +Usage: + dirac-wms-job-status [options] ... JobID ... + +Arguments: + JobID: DIRAC Job ID """ from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" import DIRAC @@ -28,9 +35,6 @@ def main(): Script.registerSwitch("", "JobGroup=", "Select jobs for specified job group") Script.registerSwitch("", "Date=", "Date in YYYY-MM-DD format, if not specified default is today") Script.registerSwitch("", "Maximum=", "Maximum number of jobs shown (default %d, 0 means all)" % maxJobs) - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... JobID ...' % Script.scriptName])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py index 35bccf4a045..8b02e2265b7 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py @@ -1,8 +1,15 @@ #!/usr/bin/env python - """ - Add an existing transformation to an existing production. - Transformations already belonging to another production cannot be added. +Add an existing transformation to an existing production. +Transformations already belonging to another production cannot be added. + +Usage: + dirac-prod-add-trans prodID transID [parentTransID] + +Arguments: + prodID: Production ID + transID: Transformation ID + parentTransID: Parent Transformation ID """ from __future__ import absolute_import from __future__ import division @@ -17,15 +24,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s prodID transID [parentTransID]' % Script.scriptName, - 'Arguments:', - ' prodID: Production ID', - ' transID: Transformation ID', - ' parentTransID: Parent Transformation ID' - ])) - Script.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py index 77e37bf3754..4175185cfa1 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py @@ -1,7 +1,12 @@ #!/usr/bin/env python - """ - Clean a given production +Clean a given production + +Usage: + dirac-prod-clean prodID + +Arguments: + prodID: Production ID (mandatory) """ from __future__ import absolute_import from __future__ import division @@ -16,13 +21,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s prodID' % Script.scriptName, - 'Arguments:', - ' prodID: Production ID (mandatory)' - ])) - Script.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py index 1a14f95bdaf..621fbc5403d 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py @@ -1,7 +1,13 @@ #!/usr/bin/env python """ - Delete a given production +Delete a given production + +Usage: + dirac-prod-delete prodID + +Arguments: + prodID: Production ID (mandatory) """ from __future__ import absolute_import from __future__ import division @@ -16,13 +22,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s prodID' % Script.scriptName, - 'Arguments:', - ' prodID: Production ID (mandatory)' - ])) - Script.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py index b312e701711..ceea5db3424 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py @@ -1,7 +1,15 @@ #!/usr/bin/env python - """ - Get informations for a given production +Get informations for a given production + +Usage: + dirac-prod-get prodID + +Arguments: + prodID: Production ID (mandatory) + +Example: + $ dirac-prod-get 381 """ from __future__ import absolute_import from __future__ import division @@ -12,20 +20,13 @@ import DIRAC from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript -from DIRAC.Core.Utilities.PrettyPrint import printTable @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s prodID' % Script.scriptName, - 'Arguments:', - ' prodID: Production ID (mandatory)' - ])) - Script.parseCommandLine() + from DIRAC.Core.Utilities.PrettyPrint import printTable from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient prodClient = ProductionClient() diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py index 2966fcfb415..9655679bc7d 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py @@ -1,7 +1,9 @@ #!/usr/bin/env python - """ - Get summary informations of all productions +Get summary informations of all productions + +Usage: + dirac-prod-get-all """ from __future__ import absolute_import from __future__ import division @@ -17,8 +19,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1]])) - Script.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py index fe45903153b..614058b51c7 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py @@ -1,7 +1,15 @@ #!/usr/bin/env python - """ - Get the description of a given production +Get the description of a given production + +Usage: + dirac-prod-get-description prodID + +Arguments: + prodID: Production ID (mandatory) + +Example: + $ dirac-prod-get-description 381 """ from __future__ import print_function @@ -16,13 +24,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s prodID' % Script.scriptName, - 'Arguments:', - ' prodID: Production ID (mandatory)' - ])) - Script.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py index c4335998215..035865552c9 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py @@ -1,7 +1,15 @@ #!/usr/bin/env python - """ - Get the transformations belonging to a given production +Get the transformations belonging to a given production + +Usage: + dirac-prod-get-trans prodID + +Arguments: + prodID: Production ID (mandatory) + +Example: + $ dirac-prod-get-trans 381 """ from __future__ import absolute_import from __future__ import division @@ -17,14 +25,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s prodID' % Script.scriptName, - 'Arguments:', - ' prodID: Production ID (mandatory)', - '\ne.g: %s 381' % Script.scriptName, - ])) - Script.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py index b55f2656767..a121ffa0570 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py @@ -1,7 +1,15 @@ #!/usr/bin/env python - """ - Start a given production +Start a given production + +Usage: + dirac-prod-start prodID + +Arguments: + prodID: Production ID (mandatory) + +Example: + $ dirac-prod-start 381 """ from __future__ import absolute_import from __future__ import division @@ -16,13 +24,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s prodID' % Script.scriptName, - 'Arguments:', - ' prodID: Production ID (mandatory)' - ])) - Script.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py index 03b163a0d0a..78c5bfb3158 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py @@ -1,7 +1,15 @@ #!/usr/bin/env python - """ - Stop a given production +Stop a given production + +Usage: + dirac-prod-stop prodID + +Arguments: + prodID: Production ID (mandatory) + +Example: + $ dirac-prod-stop 381 """ from __future__ import absolute_import from __future__ import division @@ -16,13 +24,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s prodID' % Script.scriptName, - 'Arguments:', - ' prodID: Production ID (mandatory)' - ])) - Script.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient diff --git a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_list_req_cache.py b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_list_req_cache.py index 6e50f8bd881..a5a6e79c234 100755 --- a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_list_req_cache.py +++ b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_list_req_cache.py @@ -1,20 +1,25 @@ #!/bin/env python -""" List the number of requests in the caches of all the ReqProxyies """ +""" +List the number of requests in the caches of all the ReqProxyies + +Usage: + dirac-rms-list-req-cache [options] +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" -import DIRAC +import DIRAC from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript -from DIRAC.Core.Base.Script import parseCommandLine @DIRACScript() def main(): Script.registerSwitch('', 'Full', ' Print full list of requests') - Script.setUsageMessage('\n'.join([__doc__, 'Usage:', ' %s [option|cfgfile]' % Script.scriptName])) + from DIRAC.Core.Base.Script import parseCommandLine parseCommandLine() from DIRAC.RequestManagementSystem.Client.ReqClient import ReqClient diff --git a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py index 68c7ddfe33b..4d5d021db7f 100755 --- a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py +++ b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py @@ -1,8 +1,14 @@ #!/bin/env python -""" show ReqDB summary """ +""" +Show ReqDB summary + +Usage: + dirac-rms-reqdb-summary [options] +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" from DIRAC.Core.Base import Script @@ -11,10 +17,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__, - 'Usage:', - ' %s [option|cfgfile]' % Script.scriptName])) - from DIRAC.Core.Base.Script import parseCommandLine parseCommandLine() diff --git a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py index bc6488f49e2..253d6561864 100755 --- a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py +++ b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py @@ -1,8 +1,18 @@ #!/bin/env python -""" Show request given its ID, a jobID or a transformation and a task """ +""" +Show request given its ID, a jobID or a transformation and a task + +Usage: + dirac-rms-request [options] [request[,request1,...]| + +Arguments: + request: a request ID or a unique request name + : a file containing a list of requests (Comma-separated on each line) +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" import datetime @@ -46,13 +56,6 @@ def main(): Script.registerSwitch('', 'Cancel', ' Cancel the request') Script.registerSwitch('', 'ListJobs', ' List the corresponding jobs') Script.registerSwitch('', 'TargetSE=', ' Select request only if that SE is in the targetSEs') - Script.setUsageMessage('\n'.join([__doc__, - 'Usage:', - ' %s [option|cfgfile] [request[,request1,...]|' % Script.scriptName, - 'Arguments:', - ' request: a request ID or a unique request name', - ' : a file containing a list of requests (Comma-separated on each line)'])) - from DIRAC.Core.Base.Script import parseCommandLine parseCommandLine() diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py index edc960b1cef..7a7dad7141f 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py @@ -6,7 +6,8 @@ Usage: dirac-rss-list-status [options] -Verbosity: +Verbosity:: + -o LogLevel=LEVEL NOTICE by default, levels available: INFO, DEBUG, VERBOSE.. """ from __future__ import absolute_import diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py index 4183046b2f0..de13f39f9ec 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py @@ -7,11 +7,12 @@ dirac-rss-query-db [option] Arguments: - Queries: [select|add|modify|delete] - Elements: [site|resource|component|node] + Queries: [select|add|modify|delete] + Elements: [site|resource|component|node] TableTypes: [status|log|history] -Verbosity: +Verbosity:: + -o LogLevel=LEVEL NOTICE by default, levels available: INFO, DEBUG, VERBOSE.. """ from __future__ import absolute_import diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py index 7f5b0e97c40..7f5355b691f 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py @@ -3,13 +3,15 @@ Select/Add/Delete a new DownTime entry for a given Site or Service. Usage: - dirac-rss-query-dtcache [option] + dirac-rss-query-dtcache [option] -Queries: - [select|add|delete] +Queries:: -Verbosity: - -o LogLevel=LEVEL NOTICE by default, levels available: INFO, DEBUG, VERBOSE.. + [select|add|delete] + +Verbosity:: + + -o LogLevel=LEVEL NOTICE by default, levels available: INFO, DEBUG, VERBOSE.. """ from __future__ import absolute_import from __future__ import division diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py index 1a341cb289d..46d63bcbb40 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py @@ -9,8 +9,9 @@ Usage: dirac-rss-sync [options] -Verbosity: - -o LogLevel=LEVEL NOTICE by default, levels available: INFO, DEBUG, VERBOSE.. +Verbosity:: + + -o LogLevel=LEVEL NOTICE by default, levels available: INFO, DEBUG, VERBOSE.. """ from __future__ import absolute_import from __future__ import division diff --git a/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py b/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py index 65044cf9878..50a67ef3af2 100755 --- a/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py +++ b/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py @@ -1,6 +1,12 @@ #!/usr/bin/env python """ - Get parameters assigned to the CE +Get parameters assigned to the CE + +Usage: + dirac-resource-get-parameters [option]... [cfgfile] + +Arguments: + cfgfile: DIRAC Cfg with description of the configuration (optional) """ from __future__ import absolute_import from __future__ import division @@ -26,12 +32,6 @@ def main(): from DIRAC import gLogger, exit as DIRACExit from DIRAC.ConfigurationSystem.Client.Helpers import Resources - Script.setUsageMessage('\n'.join(['Get the parameters of a CE', - 'Usage:', - ' %s [option]... [cfgfile]' % Script.scriptName, - 'Arguments:', - ' cfgfile: DIRAC Cfg with description of the configuration (optional)'])) - def setCEName(args): global ceName ceName = args diff --git a/src/DIRAC/Resources/scripts/dirac_resource_info.py b/src/DIRAC/Resources/scripts/dirac_resource_info.py index 20f5cdc2f37..f000a7ea1c1 100644 --- a/src/DIRAC/Resources/scripts/dirac_resource_info.py +++ b/src/DIRAC/Resources/scripts/dirac_resource_info.py @@ -1,6 +1,10 @@ #!/usr/bin/env python """ - Get information on resources: Computing and Storage +Get information on resources available for the given VO: Computing and Storage. +By default, resources for the VO corresponding to the current user identity are displayed + +Usage: + dirac-resource-info [option]... """ from __future__ import absolute_import from __future__ import division @@ -17,17 +21,6 @@ def main(): from DIRAC import S_OK, gLogger, gConfig, exit as DIRACExit - description = """Get information on resources available for the given VO. - - By default, resources for the VO corresponding to the current user - identity are displayed - - """ - - Script.setUsageMessage('\n'.join([description, - 'Usage:', - ' %s [option]...' % Script.scriptName])) - ceFlag = False seFlag = False voName = None diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py index e8a2c69c17e..f2d4a2cfcb9 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py @@ -13,24 +13,25 @@ - pin expiry time - pin length +Usage: + dirac-stager-monitor-file LFN SE ... + +Arguments: + LFN: LFN of the staging file + SE: Storage Element for the staging file """ from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" + from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__, - 'Usage:', - ' %s LFN SE ...' % Script.scriptName, - 'Arguments:', - ' LFN: LFN of the staging file', - ' SE: Storage Element for the staging file' - ])) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() if len(args) < 2: diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py index beb2371c9b5..2bcebfd9ee4 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py @@ -4,24 +4,26 @@ # Author : Daniela Remenska ######################################################################## """ - Report the summary of the staging progress of jobs +Report the summary of the staging progress of jobs + +Usage: + dirac-stager-monitor-jobs jobID [jobID] [jobID] ... + +Arguments: + JobID: DIRAC job ID """ from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" + from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s jobID [jobID] [jobID] ...' % Script.scriptName, - 'Arguments:', - ' JobID: DIRAC job ID \n' - ])) Script.parseCommandLine(ignoreErrors=False) args = Script.getPositionalArgs() diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py index d3f86197bf5..859a420ad1e 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py @@ -1,14 +1,21 @@ #! /usr/bin/env python ######################################################################## -# File : dirac-stager-monitor +# File : dirac-stager-monitor-request # Author : Andrew C. Smith ######################################################################## """ - Report the summary of the stage task from the DB. +Report the summary of the stage task from the DB. + +Usage: + dirac-stager-monitor-request [options] ... Request ... + +Arguments: + Request: ID of the Stage request in the StorageManager """ from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" from DIRAC.Core.Base import Script @@ -17,11 +24,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... Request ...' % Script.scriptName, - 'Arguments:', - ' Request: ID of the Stage request in the StorageManager'])) Script.parseCommandLine(ignoreErrors=False) args = Script.getPositionalArgs() diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py index fb9d52add4e..1469f36b103 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py @@ -4,12 +4,24 @@ # Author : Daniela Remenska ######################################################################## """ - Report the details of file staging requests, based on selection filters +Report the details of file staging requests, based on selection filters + +Usage: + dirac-stager-monitor-requests [--status=] [--se=] [--limit=] [--showJobs=YES] ... + +Arguments: + status: file status=(New, Offline, Waiting, Failed, StageSubmitted, Staged). + se: storage element + showJobs: whether to ALSO list the jobs asking for these files to be staged + + WARNING: Query may be heavy, please use --limit switch! """ from __future__ import absolute_import from __future__ import division from __future__ import print_function + _RCSID__ = "$Id$" + from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC import gConfig, gLogger, exit as DIRACExit, S_OK, version @@ -19,19 +31,6 @@ @DIRACScript() def main(): - Script.setUsageMessage( - '\n'.join( - [ - __doc__.split('\n')[1], - 'Usage:', - ' %s [--status=] [--se=] [--limit=] [--showJobs=YES] ...' % - Script.scriptName, - 'Arguments:', - ' status: file status=(New, Offline, Waiting, Failed, StageSubmitted, Staged).', - ' se: storage element', - ' showJobs: whether to ALSO list the jobs asking for these files to be staged', - ' WARNING: Query may be heavy, please use --limit switch!'])) - def registerSwitches(): ''' Registers all switches that can be used while calling the script from the diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py index ee02500aee8..67d145295c8 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py @@ -8,7 +8,6 @@ Currently used Cache per SE is also reported. (active pins) Example: - dirac-stager-show-stats Status SE NumberOfFiles Size(GB) @@ -35,7 +34,6 @@ @DIRACScript() def main(): - Script.setUsageMessage(__doc__) Script.parseCommandLine(ignoreErrors=False) from DIRAC.StorageManagementSystem.Client.StorageManagerClient import StorageManagerClient client = StorageManagerClient() diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py index ffcd783bef3..ad5299ec006 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py @@ -7,24 +7,25 @@ - submit staging requests for a particular Storage Element! Default DIRAC JobID will be =0. (not visible in the Job monitoring list though) +Usage: + dirac-stager-stage-files + +Arguments: + : LFN to Stage (or local file with list of LFNs) + : Name of Storage Element """ from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" + from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s ' % Script.scriptName, - 'Arguments:', - ' : LFN to Stage (or local file with list of LFNs)', - ' : Name of Storage Element'])) - Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py b/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py index eb965c8c94f..33b0fc549f9 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py @@ -1,15 +1,16 @@ #!/usr/bin/env python -''' - dirac-production-runjoblocal - - Module created to run failed jobs locally on a CVMFS-configured machine. - It creates the necessary environment, downloads the necessary files, modifies the necessary - files and runs the job - - Usage: - dirac-production-diracrunjoblocal (job ID) - No parenthesis - -''' +""" +Module created to run failed jobs locally on a CVMFS-configured machine. +It creates the necessary environment, downloads the necessary files, modifies the necessary +files and runs the job + +Usage: + dirac-production-runjoblocal [Data imput mode] [job ID] + +Arguments: + Download (Job ID): Defines data aquisition as DownloadInputData + Protocol (Job ID): Defines data acquisition as InputDataByProtocol +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function @@ -138,16 +139,9 @@ def __runJobLocally(jobID, basepath, vo): @DIRACScript() def main(): Script.parseCommandLine(ignoreErrors=False) - Script.registerSwitch('D:', 'Download=', 'Defines data acquisition as DownloadInputData') Script.registerSwitch('P:', 'Protocol=', 'Defines data acquisition as InputDataByProtocol') - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - '\nUsage:', - 'dirac-production-runjoblocal [Data imput mode] [job ID]' - '\nArguments:', - ' Download (Job ID): Defines data aquisition as DownloadInputData', - ' Protocol (Job ID): Defines data acquisition as InputDataByProtocol\n'])) _downloadinputdata = False _jobID = None diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py index b3cb8e739ab..c0d8b9142df 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py @@ -1,7 +1,9 @@ #!/usr/bin/env python - """ - Add files to an existing transformation +Add files to an existing transformation + +Usage: + dirac-transformation-add-files TransID """ from __future__ import absolute_import from __future__ import division @@ -17,11 +19,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s TransID ' % Script.scriptName - ])) - Script.parseCommandLine() from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py index ce6af535edc..92970c0b566 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py @@ -1,5 +1,9 @@ #!/usr/bin/env python -""" Archive a transformation +""" +Archive a transformation + +Usage: + dirac-transformation-archive transID [transID] [transID] """ from __future__ import print_function @@ -7,19 +11,19 @@ from __future__ import division import sys -from DIRAC.Core.Base.Script import parseCommandLine, getPositionalArgs +from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(): - parseCommandLine() + Script.parseCommandLine() + args = Script.getPositionalArgs() + + if not args: + Script.showHelp() - if not getPositionalArgs(): - print('Usage: dirac-transformation-archive transID [transID] [transID]') - sys.exit() - else: - transIDs = [int(arg) for arg in getPositionalArgs()] + transIDs = [int(arg) for arg in args] from DIRAC.TransformationSystem.Agent.TransformationCleaningAgent import TransformationCleaningAgent from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py index acfb5e4ca3e..696ee06c296 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py @@ -1,5 +1,9 @@ #!/usr/bin/env python -""" Clean a tranformation +""" +Clean a tranformation + +Usage: + dirac-transformation-clean transID [transID] [transID] """ from __future__ import print_function @@ -7,22 +11,22 @@ from __future__ import division import sys -from DIRAC.Core.Base.Script import parseCommandLine, getPositionalArgs +from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(): - parseCommandLine() + Script.parseCommandLine() + + args = Script.getPositionalArgs() + if not args: + Script.showHelp() from DIRAC.TransformationSystem.Agent.TransformationCleaningAgent import TransformationCleaningAgent from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient - if not getPositionalArgs(): - print('Usage: dirac-transformation-clean transID [transID] [transID]') - sys.exit() - else: - transIDs = [int(arg) for arg in getPositionalArgs()] + transIDs = [int(arg) for arg in args] agent = TransformationCleaningAgent('Transformation/TransformationCleaningAgent', 'Transformation/TransformationCleaningAgent', diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py index 2484a5d7d20..05a87f660ed 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py @@ -1,5 +1,6 @@ #!/usr/bin/env python -""" Command to launch the Transformation Shell +""" +Command to launch the Transformation Shell """ from __future__ import absolute_import from __future__ import division @@ -11,12 +12,6 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" -Launch the Transformation shell - -Usage: - %s [option] -""" % Script.scriptName) Script.parseCommandLine(ignoreErrors=False) from DIRAC.TransformationSystem.Client.TransformationCLI import TransformationCLI diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py index 9f26d525735..577f63c3f57 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py @@ -1,7 +1,10 @@ #!/usr/bin/env python """ - Get the files attached to a transformation +Get the files attached to a transformation + +Usage: + dirac-transformation-get-files TransID """ from __future__ import absolute_import from __future__ import division @@ -16,12 +19,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([ - __doc__.split('\n')[1], - 'Usage:', - ' %s TransID' % Script.scriptName - ])) - Script.parseCommandLine() from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py index a4f9acb9420..f855a192ce1 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py @@ -1,8 +1,11 @@ #!/bin/env python -"""Script to call the DataRecoveryAgent functionality by hand.""" +""" +Script to call the DataRecoveryAgent functionality by hand. +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function + from DIRAC import S_OK, gLogger from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -28,9 +31,6 @@ def setTransID(self, transID): def registerSwitches(self): Script.registerSwitch('T:', 'TransID=', 'TransID to Check/Fix', self.setTransID) Script.registerSwitch('X', 'Enabled', 'Enable the changes', self.setEnabled) - Script.setUsageMessage('\n'.join([__doc__, - '\nUsage:', - ' %s [option|cfgfile] ...\n' % Script.scriptName])) @DIRACScript() diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py index 131ea60dce5..a080b50add8 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py @@ -1,25 +1,30 @@ #!/usr/bin/env python -""" Remove the outputs produced by a transformation +""" +Remove the outputs produced by a transformation + +Usage: + dirac-transformation-remove-output transID [transID] [transID] """ from __future__ import print_function from __future__ import absolute_import from __future__ import division + import sys -from DIRAC.Core.Base.Script import parseCommandLine, getPositionalArgs +from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(): - parseCommandLine() + Script.parseCommandLine() + args = Script.getPositionalArgs() + + if not args: + Script.showHelp() - if not getPositionalArgs(): - print('Usage: dirac-transformation-remove-output transID [transID] [transID]') - sys.exit() - else: - transIDs = [int(arg) for arg in getPositionalArgs()] + transIDs = [int(arg) for arg in args] from DIRAC.TransformationSystem.Agent.TransformationCleaningAgent import TransformationCleaningAgent from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py index 037e5072409..ab8c79320f2 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py @@ -1,5 +1,9 @@ #!/usr/bin/env python -""" runs checkTransformationIntegrity from ValidateOutputDataAgent on selected Tranformation +""" +Runs checkTransformationIntegrity from ValidateOutputDataAgent on selected Tranformation + +Usage: + dirac-transformation-verify-outputdata transID [transID] [transID] """ from __future__ import print_function @@ -7,19 +11,19 @@ from __future__ import division import sys -from DIRAC.Core.Base.Script import parseCommandLine, getPositionalArgs +from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(): - parseCommandLine() + Script.parseCommandLine() + + args = Script.getPositionalArgs() + if not args: + Script.showHelp() - if not getPositionalArgs(): - print('Usage: dirac-transformation-verify-outputdata transID [transID] [transID]') - sys.exit() - else: - transIDs = [int(arg) for arg in getPositionalArgs()] + transIDs = [int(arg) for arg in args] from DIRAC.TransformationSystem.Agent.ValidateOutputDataAgent import ValidateOutputDataAgent from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py index 5b49af94d6e..6fb0be9cdb4 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py @@ -4,7 +4,10 @@ # Author : A.T. ######################################################################## """ - Kill the specified pilot +Kill the specified pilot + +Usage: + dirac-admin-kill-pilot """ from __future__ import absolute_import from __future__ import division @@ -18,10 +21,6 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s ' % Script.scriptName])) - Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_pilot_logging_info.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_pilot_logging_info.py index 882e1a854e4..88af3776a1b 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_pilot_logging_info.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_pilot_logging_info.py @@ -1,6 +1,11 @@ #! /usr/bin/env python """ - Get Pilots Logging for specific Pilot UUID or Job ID. +Get Pilots Logging for specific Pilot UUID or Job ID. + +Usage: + dirac-admin-pilot-loggin-info