From 65f0e4dc82fdfbd70d6228b3f0a72598e847eb81 Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Mon, 8 Feb 2021 23:31:45 +0100 Subject: [PATCH 01/20] move docs from referenses to scripts --- .../DataManagement/dirac-dms-add-file.rst | 42 ----------- .../dirac-dms-catalog-metadata.rst | 18 ----- .../dirac-dms-clean-directory.rst | 18 ----- .../DataManagement/dirac-dms-data-size.rst | 24 ------- .../dirac-dms-filecatalog-cli.rst | 34 --------- .../DataManagement/dirac-dms-find-lfns.rst | 24 ------- .../DataManagement/dirac-dms-get-file.rst | 21 ------ .../dirac-dms-lfn-accessURL.rst | 23 ------- .../DataManagement/dirac-dms-lfn-metadata.rst | 33 --------- .../DataManagement/dirac-dms-lfn-replicas.rst | 25 ------- .../dirac-dms-remove-catalog-files.rst | 16 ----- .../DataManagement/dirac-dms-remove-files.rst | 15 ---- .../dirac-dms-remove-replicas.rst | 17 ----- .../dirac-dms-replicate-lfn.rst | 25 ------- .../dirac-dms-show-se-status.rst | 28 -------- .../DataManagement/dirac-dms-user-lfns.rst | 42 ----------- .../DataManagement/dirac-dms-user-quota.rst | 16 ----- .../dirac-wms-get-normalized-queue-length.rst | 20 ------ .../dirac-wms-get-queue-normalization.rst | 20 ------ .../dirac-wms-job-attributes.rst | 53 -------------- .../dirac-wms-job-delete.rst | 26 ------- .../dirac-wms-job-get-input.rst | 24 ------- .../dirac-wms-job-get-jdl.rst | 36 ---------- .../dirac-wms-job-get-output.rst | 26 ------- .../WorkloadManagement/dirac-wms-job-kill.rst | 32 --------- .../dirac-wms-job-logging-info.rst | 34 --------- .../dirac-wms-job-parameters.rst | 42 ----------- .../WorkloadManagement/dirac-wms-job-peek.rst | 19 ----- .../dirac-wms-job-reschedule.rst | 20 ------ .../dirac-wms-job-status.rst | 25 ------- .../dirac-wms-job-submit.rst | 25 ------- .../scripts/dirac_accounting_decode_fileid.py | 22 +++--- .../scripts/dirac_admin_accounting_cli.py | 11 +-- .../Client/LocalConfiguration.py | 36 ++++++++-- .../scripts/dirac_admin_add_resources.py | 10 +-- .../scripts/dirac_admin_add_shifter.py | 21 +++--- .../scripts/dirac_admin_add_site.py | 12 ++-- .../scripts/dirac_admin_bdii_info.py | 20 +++--- .../dirac_admin_check_config_options.py | 10 +-- .../scripts/dirac_admin_sort_cs_sites.py | 34 ++++----- .../scripts/dirac_admin_voms_sync.py | 12 ++-- .../scripts/dirac_configuration_cli.py | 12 ++-- .../dirac_configuration_dump_local_cache.py | 12 ++-- src/DIRAC/Core/Base/Script.py | 2 + src/DIRAC/Core/scripts/dirac_agent.py | 15 ++-- .../Core/scripts/dirac_deploy_scripts.py | 1 + src/DIRAC/Core/scripts/dirac_executor.py | 16 +++-- src/DIRAC/Core/scripts/dirac_info.py | 31 +++++++-- src/DIRAC/Core/scripts/dirac_install_db.py | 14 ++-- .../Core/scripts/dirac_install_web_portal.py | 12 ++-- src/DIRAC/Core/scripts/dirac_service.py | 7 ++ src/DIRAC/Core/scripts/dirac_setup_site.py | 14 ++-- .../scripts/dirac_admin_allow_se.py | 18 +++-- .../scripts/dirac_admin_ban_se.py | 18 +++-- .../scripts/dirac_admin_user_quota.py | 25 +++++-- .../scripts/dirac_dms_add_file.py | 58 ++++++++++------ .../scripts/dirac_dms_catalog_metadata.py | 23 ++++--- .../dirac_dms_change_replica_status.py | 14 ++-- .../scripts/dirac_dms_clean_directory.py | 24 ++++--- .../dirac_dms_create_archive_request.py | 11 +-- .../dirac_dms_create_moving_request.py | 10 +-- .../dirac_dms_create_removal_request.py | 22 +++--- .../scripts/dirac_dms_data_size.py | 22 ++++-- .../scripts/dirac_dms_directory_sync.py | 31 +++++---- .../scripts/dirac_dms_filecatalog_cli.py | 33 +++++++-- .../scripts/dirac_dms_find_lfns.py | 35 +++++----- .../scripts/dirac_dms_move_replica_request.py | 24 ++++--- .../scripts/dirac_dms_protocol_matrix.py | 69 ++++++++++--------- .../dirac_dms_put_and_register_request.py | 25 ++++--- .../scripts/dirac_dms_remove_catalog_files.py | 20 ++++-- .../dirac_dms_remove_catalog_replicas.py | 18 ++--- .../scripts/dirac_dms_remove_files.py | 18 +++-- .../scripts/dirac_dms_remove_replicas.py | 23 ++++--- .../scripts/dirac_dms_replica_metadata.py | 14 ++-- ...irac_dms_replicate_and_register_request.py | 24 ++++--- .../scripts/dirac_dms_resolve_guid.py | 14 ++-- .../scripts/dirac_dms_set_replica_status.py | 21 +++--- .../scripts/dirac_dms_show_se_status.py | 24 +++++-- .../scripts/dirac_dms_user_lfns.py | 23 ++++++- .../scripts/dirac_dms_user_quota.py | 20 ++++-- .../scripts/dirac_admin_get_CAs.py | 9 ++- .../scripts/dirac_admin_get_proxy.py | 25 ++++--- .../scripts/dirac_admin_sysadmin_cli.py | 12 ++++ .../scripts/dirac_admin_update_instance.py | 17 ++--- .../scripts/dirac_admin_update_pilot.py | 17 ++--- .../scripts/dirac_admin_users_with_proxy.py | 27 +++++++- .../scripts/dirac_install_component.py | 22 +++--- .../scripts/dirac_install_tornado_service.py | 22 +++--- .../scripts/dirac_populate_component_db.py | 8 ++- .../scripts/dirac_proxy_destroy.py | 10 ++- .../scripts/dirac_proxy_get_uploaded_info.py | 17 ++++- .../scripts/dirac_proxy_info.py | 20 +++++- .../scripts/dirac_proxy_init.py | 3 +- .../scripts/dirac_restart_component.py | 18 +++-- .../scripts/dirac_start_component.py | 16 +++-- .../scripts/dirac_status_component.py | 26 ++++--- .../scripts/dirac_stop_component.py | 23 ++++--- .../scripts/dirac_sys_sendmail.py | 26 ++++--- .../scripts/dirac_uninstall_component.py | 26 ++++--- .../scripts/dirac_admin_add_group.py | 22 ++++-- .../scripts/dirac_admin_add_host.py | 26 ++++--- .../scripts/dirac_admin_add_user.py | 21 ++++-- .../scripts/dirac_admin_allow_site.py | 22 ++++-- .../scripts/dirac_admin_ban_site.py | 26 ++++--- .../Interfaces/scripts/dirac_admin_ce_info.py | 27 +++++--- .../scripts/dirac_admin_delete_user.py | 21 ++++-- .../scripts/dirac_admin_get_banned_sites.py | 10 +++ .../dirac_admin_get_job_pilot_output.py | 21 ++++-- .../scripts/dirac_admin_get_job_pilots.py | 40 +++++++++-- .../scripts/dirac_admin_get_pilot_info.py | 45 +++++++++--- .../dirac_admin_get_pilot_logging_info.py | 39 ++++++++--- .../scripts/dirac_admin_get_pilot_output.py | 23 +++++-- .../scripts/dirac_admin_get_site_mask.py | 26 ++++--- .../scripts/dirac_admin_list_hosts.py | 15 +++- .../scripts/dirac_admin_list_users.py | 28 ++++++-- .../scripts/dirac_admin_modify_user.py | 25 ++++--- .../scripts/dirac_admin_pilot_summary.py | 27 +++++++- .../scripts/dirac_admin_reset_job.py | 21 ++++-- .../scripts/dirac_admin_service_ports.py | 28 ++++++-- .../scripts/dirac_admin_set_site_protocols.py | 20 ++++-- .../scripts/dirac_admin_site_info.py | 26 +++++-- .../scripts/dirac_admin_site_mask_logging.py | 28 +++++--- .../dirac_admin_sync_users_from_file.py | 23 ++++--- .../Interfaces/scripts/dirac_dms_get_file.py | 22 ++++-- .../scripts/dirac_dms_lfn_accessURL.py | 27 +++++--- .../scripts/dirac_dms_lfn_metadata.py | 34 +++++++-- .../scripts/dirac_dms_lfn_replicas.py | 23 +++++-- .../scripts/dirac_dms_pfn_accessURL.py | 18 +++-- .../scripts/dirac_dms_pfn_metadata.py | 18 +++-- .../scripts/dirac_dms_replicate_lfn.py | 29 +++++--- .../scripts/dirac_framework_ping_service.py | 45 +++++++++--- .../scripts/dirac_framework_self_ping.py | 5 +- .../Interfaces/scripts/dirac_repo_monitor.py | 16 +++-- .../scripts/dirac_utils_file_adler.py | 26 ++++--- .../scripts/dirac_utils_file_md5.py | 28 +++++--- .../dirac_wms_get_normalized_queue_length.py | 27 +++++--- .../dirac_wms_get_queue_normalization.py | 28 +++++--- .../scripts/dirac_wms_job_attributes.py | 54 +++++++++++++-- .../scripts/dirac_wms_job_delete.py | 23 ++++--- .../scripts/dirac_wms_job_get_input.py | 23 +++++-- .../scripts/dirac_wms_job_get_jdl.py | 37 ++++++++-- .../scripts/dirac_wms_job_get_output.py | 23 ++++--- .../scripts/dirac_wms_job_get_output_data.py | 16 +++-- .../Interfaces/scripts/dirac_wms_job_kill.py | 35 ++++++++-- .../scripts/dirac_wms_job_logging_info.py | 35 ++++++++-- .../scripts/dirac_wms_job_parameters.py | 43 ++++++++++-- .../Interfaces/scripts/dirac_wms_job_peek.py | 20 ++++-- .../scripts/dirac_wms_job_reschedule.py | 23 +++++-- .../scripts/dirac_wms_job_status.py | 30 +++++--- .../scripts/dirac_wms_job_submit.py | 22 ++++-- .../dirac_wms_jobs_select_output_search.py | 16 +++-- .../scripts/dirac_wms_select_jobs.py | 15 ++-- .../scripts/dirac_prod_add_trans.py | 25 +++---- .../scripts/dirac_prod_clean.py | 19 ++--- .../scripts/dirac_prod_delete.py | 18 ++--- .../scripts/dirac_prod_get.py | 25 ++++--- .../scripts/dirac_prod_get_all.py | 10 +-- .../scripts/dirac_prod_get_description.py | 23 ++++--- .../scripts/dirac_prod_get_trans.py | 24 ++++--- .../scripts/dirac_prod_start.py | 23 ++++--- .../scripts/dirac_prod_stop.py | 23 ++++--- .../scripts/dirac_rms_list_req_cache.py | 15 ++-- .../scripts/dirac_rms_reqdb_summary.py | 13 ++-- .../scripts/dirac_rms_request.py | 21 ++++-- .../scripts/dirac_rss_list_status.py | 6 +- .../scripts/dirac_rss_query_db.py | 13 ++-- .../scripts/dirac_rss_query_dtcache.py | 15 ++-- .../scripts/dirac_rss_set_token.py | 3 +- .../scripts/dirac_rss_sync.py | 8 ++- .../scripts/dirac_resource_get_parameters.py | 16 +++-- .../Resources/scripts/dirac_resource_info.py | 18 ++--- .../scripts/dirac_stager_monitor_file.py | 18 +++-- .../scripts/dirac_stager_monitor_jobs.py | 19 +++-- .../scripts/dirac_stager_monitor_request.py | 19 +++-- .../scripts/dirac_stager_monitor_requests.py | 29 ++++---- .../scripts/dirac_stager_show_stats.py | 2 +- .../scripts/dirac_stager_stage_files.py | 18 +++-- .../scripts/dirac_production_runjoblocal.py | 26 ++++--- .../scripts/dirac_transformation_add_files.py | 13 ++-- .../scripts/dirac_transformation_archive.py | 9 ++- .../scripts/dirac_transformation_clean.py | 9 ++- .../scripts/dirac_transformation_cli.py | 14 ++-- .../scripts/dirac_transformation_get_files.py | 13 ++-- .../dirac_transformation_recover_data.py | 12 ++-- .../dirac_transformation_remove_output.py | 9 ++- .../dirac_transformation_verify_outputdata.py | 9 ++- .../scripts/dirac_admin_kill_pilot.py | 11 +-- .../scripts/dirac_admin_pilot_logging_info.py | 14 ++-- .../scripts/dirac_admin_show_task_queues.py | 23 +++++-- .../scripts/dirac_jobexec.py | 1 + .../scripts/dirac_wms_cpu_normalization.py | 38 +++++----- .../scripts/dirac_wms_get_queue_cpu_time.py | 13 ++-- .../scripts/dirac_wms_get_wn.py | 7 +- .../scripts/dirac_wms_get_wn_parameters.py | 17 +++-- .../scripts/dirac_wms_match.py | 21 +++--- .../scripts/dirac_wms_pilot_job_info.py | 17 +++-- 196 files changed, 2280 insertions(+), 1962 deletions(-) delete mode 100644 docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-add-file.rst delete mode 100644 docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-catalog-metadata.rst delete mode 100644 docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-clean-directory.rst delete mode 100644 docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-data-size.rst delete mode 100644 docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-filecatalog-cli.rst delete mode 100644 docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-find-lfns.rst delete mode 100644 docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-get-file.rst delete mode 100644 docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-lfn-accessURL.rst delete mode 100644 docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-lfn-metadata.rst delete mode 100644 docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-lfn-replicas.rst delete mode 100644 docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-remove-catalog-files.rst delete mode 100644 docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-remove-files.rst delete mode 100644 docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-remove-replicas.rst delete mode 100644 docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-replicate-lfn.rst delete mode 100644 docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-show-se-status.rst delete mode 100644 docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-user-lfns.rst delete mode 100644 docs/source/UserGuide/CommandReference/DataManagement/dirac-dms-user-quota.rst delete mode 100644 docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-get-normalized-queue-length.rst delete mode 100644 docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-get-queue-normalization.rst delete mode 100644 docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-attributes.rst delete mode 100644 docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-delete.rst delete mode 100644 docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-get-input.rst delete mode 100644 docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-get-jdl.rst delete mode 100644 docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-get-output.rst delete mode 100644 docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-kill.rst delete mode 100644 docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-logging-info.rst delete mode 100644 docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-parameters.rst delete mode 100644 docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-peek.rst delete mode 100644 docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-reschedule.rst delete mode 100644 docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-status.rst delete mode 100644 docs/source/UserGuide/CommandReference/WorkloadManagement/dirac-wms-job-submit.rst 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/scripts/dirac_accounting_decode_fileid.py b/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py index 08892fd1aa0..93a61f61513 100755 --- a/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py +++ b/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py @@ -4,17 +4,27 @@ # Author : Adria Casajus ######################################################################## """ - Decode Accounting plot URLs +Decode Accounting plot URLs + +Usage:: + + dirac-accounting-decode-fileid [option|cfgfile] ... 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 @@ -24,11 +34,7 @@ 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.setUsageMessage(__doc__) 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..9af981c1a19 100755 --- a/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py +++ b/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py @@ -4,11 +4,16 @@ # 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 [option|cfgfile] ... """ from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" from DIRAC.Core.Base import Script @@ -18,9 +23,7 @@ @DIRACScript() def main(): Script.localCfg.addDefaultEntry("LogLevel", "info") - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ...' % Script.scriptName, ])) + Script.setUsageMessage(__doc__) 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..57ca01abbef 100755 --- a/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py +++ b/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py @@ -6,8 +6,9 @@ __RCSID__ = "$Id$" -import sys +import re import os +import sys import getopt import DIRAC @@ -46,7 +47,9 @@ def __init__(self, defaultSectionPath=""): self.componentType = False self.loggingSection = "/DIRAC" self.initialized = False + self.__scriptDescription = '' self.__usageMessage = '' + self.__usageExample = '' self.__debugMode = 0 self.firstOptionIndex = 1 @@ -86,7 +89,20 @@ def setUsageMessage(self, usageMsg): """ Define message to be display by the showHelp method """ - self.__usageMessage = usageMsg + r = r"(.*?)(?:(?:Usage|Example|Arguments|Options):+\n|$)" + if usageMsg: + desc = re.search(r, usageMsg, re.DOTALL) + if desc: + self.__scriptDescription = '\n' + desc.group(1).strip('\n') + '\n' + usage = re.search(r"%s%s" % (r"Usage:+", r), usageMsg, re.DOTALL) + if usage: + self.__usageMessage = '\nUsage:\n' + usage.group(1).strip('\n') + '\n' + args = re.search(r"%s%s" % (r"Arguments:+", r), usageMsg, re.DOTALL) + if args: + self.__arguments = '\nArguments:\n' + args.group(1).strip('\n') + '\n' + expl = re.search(r"%s%s" % (r"Example:+", r), usageMsg, re.DOTALL) + if expl: + self.__usageExample = '\nExample:\n' + expl.group(1).strip('\n') + '\n' def __setOptionValue(self, optionPath, value): gConfigurationData.setOptionInCFG(self.__getAbsolutePath(optionPath), @@ -262,8 +278,7 @@ def __parseCommandLine(self): for opt, val in opts: if opt in ('-h', '--help'): - self.showHelp() - sys.exit(2) + self.showHelp(exitCode=2) if opt == '--cfg': self.cliAdditionalCFGFiles.append(os.path.expanduser(val)) @@ -510,8 +525,11 @@ def showHelp(self, dummy=False, exitCode=0): """ Printout help message including a Usage message if defined via setUsageMessage method """ + if self.__scriptDescription: + gLogger.notice(self.__scriptDescription) + if self.__usageMessage: - gLogger.notice('\n' + self.__usageMessage.lstrip()) + gLogger.notice(self.__usageMessage) else: gLogger.notice("\nUsage:") gLogger.notice("\n %s (|)*" % os.path.basename(sys.argv[0])) @@ -534,7 +552,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 +563,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.__arguments: + gLogger.notice(self.__arguments) + + if self.__usageExample: + gLogger.notice(self.__usageExample) + 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..889364d47e6 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py @@ -4,7 +4,11 @@ # Author : Andrei Tsaregorodtsev ######################################################################## """ - Add resources from the BDII database for a given VO +Add resources from the BDII database for a given VO + +Usage:: + + dirac-admin-add-resources [option|cfgfile] """ from __future__ import absolute_import from __future__ import division @@ -37,9 +41,7 @@ def processScriptSwitches(): 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.setUsageMessage(__doc__) 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..abee1f072f4 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py @@ -3,7 +3,18 @@ # 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 [option|cfgfile] ... 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 +29,7 @@ @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.setUsageMessage(__doc__) 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 0a4f00d8307..f3070211fe7 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py @@ -4,21 +4,21 @@ # 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: +Usage:: dirac-admin-add-site [option|cfgfile] ... DIRACSiteName GridSiteName CE [CE] ... -Arguments: +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: +Example:: $ dirac-admin-add-site LCG.IN2P3.fr IN2P3-Site """ diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py index cb65a3d167c..bf227256ebe 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py @@ -4,7 +4,17 @@ # 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 [option|cfgfile] ... + +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 +37,7 @@ 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)'])) + Script.setUsageMessage(__doc__) 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..ee748e39769 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,9 @@ This script should be run by dirac administrators after major updates. +Usage:: + + dirac-admin-check-config-options [option|cfgfile] -[MAUO] [-S - Example: dirac-admin-sort-cs-sites -C DIRAC - Sort sites in subsection /Resources/Sites/DIRAC by country postfix +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 """ from __future__ import absolute_import from __future__ import division @@ -63,18 +66,7 @@ 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.setUsageMessage(__doc__) 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..c6b0f1417ea 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py @@ -4,7 +4,11 @@ # Author : Andrei Tsaregorodtsev ######################################################################## """ - Synchronize VOMS user data with the DIRAC Registry +Synchronize VOMS user data with the DIRAC Registry + +Usage:: + + dirac-admin-voms-sync [option|cfgfile] ... """ from __future__ import absolute_import from __future__ import division @@ -40,11 +44,7 @@ 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.setUsageMessage(__doc__) Script.parseCommandLine(ignoreErrors=True) diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py index 6641f2e44a2..34ec9c2415a 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py @@ -4,7 +4,11 @@ # Author : Adria Casajus ######################################################################## """ - Command line interface to DIRAC Configuration Server +Command line interface to DIRAC Configuration Server + +Usage:: + + dirac-configuration-cli [option|cfgfile] ... """ from __future__ import absolute_import from __future__ import division @@ -19,11 +23,7 @@ @DIRACScript() def main(): Script.localCfg.addDefaultEntry("LogLevel", "fatal") - Script.setUsageMessage('\n'.join([ - __doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ...' % Script.scriptName, - ])) + Script.setUsageMessage(__doc__) 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..4d48b0f6dfb 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,14 @@ #!/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 + +Usage:: + + dirac-configuration-dump-local-cache [option|cfgfile] ... """ from __future__ import print_function from __future__ import absolute_import @@ -38,9 +42,7 @@ 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.setUsageMessage(__doc__) 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..da9402fdd8c 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,7 @@ 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 +setUsageMessage(doc) gIsAlreadyInitialized = False diff --git a/src/DIRAC/Core/scripts/dirac_agent.py b/src/DIRAC/Core/scripts/dirac_agent.py index e449967ed6c..bb451291a4a 100755 --- a/src/DIRAC/Core/scripts/dirac_agent.py +++ b/src/DIRAC/Core/scripts/dirac_agent.py @@ -3,25 +3,32 @@ # File : dirac-agent # Author : Adria Casajus, Andrei Tsaregorodtsev, Stuart Paterson ######################################################################## +""" +This is a script to launch DIRAC agents. Mostly internal. + +Usage:: + + dirac-agent (|)* +""" + from __future__ import absolute_import from __future__ import division from __future__ import print_function __RCSID__ = "$Id$" -""" This is a script to launch DIRAC agents -""" - 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_deploy_scripts.py b/src/DIRAC/Core/scripts/dirac_deploy_scripts.py index 0c1af6cf6d8..0f9fc15074e 100755 --- a/src/DIRAC/Core/scripts/dirac_deploy_scripts.py +++ b/src/DIRAC/Core/scripts/dirac_deploy_scripts.py @@ -8,6 +8,7 @@ dirac-deploy-scripts (|)* ... Arguments:: + python path: you can specify the folder where your python installation should be fetched from to replace the shebang diff --git a/src/DIRAC/Core/scripts/dirac_executor.py b/src/DIRAC/Core/scripts/dirac_executor.py index d9a2970b24f..7f636e2a6ea 100755 --- a/src/DIRAC/Core/scripts/dirac_executor.py +++ b/src/DIRAC/Core/scripts/dirac_executor.py @@ -3,25 +3,31 @@ # File : dirac-executor # Author : Adria Casajus ######################################################################## +""" +This is a script to launch DIRAC executors + +Usage:: + + dirac-executor (|)* +""" + from __future__ import absolute_import from __future__ import division from __future__ import print_function __RCSID__ = "$Id$" -""" This is a script to launch DIRAC executors -""" - 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..846ac06d100 100755 --- a/src/DIRAC/Core/scripts/dirac_info.py +++ b/src/DIRAC/Core/scripts/dirac_info.py @@ -4,7 +4,19 @@ # Author : Andrei Tsaregorodtsev ######################################################################## """ - Report info about local DIRAC installation +Report info about local DIRAC installation + +Usage:: + + dirac-info [option|cfgfile] ... Site + +Example:: + + $ dirac-info + DIRAC version : v5r12 + Setup : Dirac-Production + ConfigurationServer : ['dips://dirac.in2p3.fr:9135/Configuration/Server'] + VirtualOrganization : vo.formation.idgrilles.fr """ from __future__ import print_function @@ -27,11 +39,20 @@ 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.setUsageMessage(__doc__) + 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..33e111edcf5 100755 --- a/src/DIRAC/Core/scripts/dirac_install_db.py +++ b/src/DIRAC/Core/scripts/dirac_install_db.py @@ -1,6 +1,14 @@ #!/usr/bin/env python """ Create a new DB in the MySQL server + +Usage:: + + dirac-install-db [option|cfgFile] ... DB ... + +Arguments:: + + DB: Name of the Database (mandatory) """ # Script initialization and parseCommandLine from __future__ import print_function @@ -12,11 +20,7 @@ @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.setUsageMessage(__doc__) Script.parseCommandLine() args = Script.getPositionalArgs() if len(args) < 1: diff --git a/src/DIRAC/Core/scripts/dirac_install_web_portal.py b/src/DIRAC/Core/scripts/dirac_install_web_portal.py index 4e8d7f81af8..b5dc9d50255 100755 --- a/src/DIRAC/Core/scripts/dirac_install_web_portal.py +++ b/src/DIRAC/Core/scripts/dirac_install_web_portal.py @@ -5,12 +5,17 @@ ######################################################################## """ Do the initial installation of a DIRAC Web portal + +Usage:: + + dirac-install-web-portal [option|cfgfile] ... """ 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 +23,7 @@ @DIRACScript() def main(): Script.disableCS() - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ...' % Script.scriptName])) - + Script.setUsageMessage(__doc__) Script.parseCommandLine() from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller diff --git a/src/DIRAC/Core/scripts/dirac_service.py b/src/DIRAC/Core/scripts/dirac_service.py index 7626ce51622..8c996d94a44 100755 --- a/src/DIRAC/Core/scripts/dirac_service.py +++ b/src/DIRAC/Core/scripts/dirac_service.py @@ -3,7 +3,13 @@ # File : dirac-service # Author : Adria Casajus ######################################################################## +""" +This is a script to launch DIRAC services. Mostly internal. +Usage:: + + dirac-service (|)* +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function @@ -21,6 +27,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..a9751feb08a 100755 --- a/src/DIRAC/Core/scripts/dirac_setup_site.py +++ b/src/DIRAC/Core/scripts/dirac_setup_site.py @@ -5,6 +5,14 @@ ######################################################################## """ 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,11 +39,7 @@ 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.setUsageMessage(__doc__) Script.registerSwitch( "e", diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py index a8ce614b4f6..8503f68bd80 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py @@ -1,5 +1,14 @@ #!/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,12 +29,7 @@ def main(): site = '' mute = False - Script.setUsageMessage(""" - Enable using one or more Storage Elements - - Usage: - %s SE1 [SE2 ...] - """ % Script.scriptName) + Script.setUsageMessage(__doc__) Script.registerSwitch("r", "AllowRead", " Allow only reading from the storage element") Script.registerSwitch("w", "AllowWrite", " Allow only writing 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..74c32371937 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py @@ -1,6 +1,15 @@ #!/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,12 +30,7 @@ def main(): site = '' mute = False - Script.setUsageMessage(""" - Ban one or more Storage Elements for usage - - Usage: - %s SE1 [SE2 ...] - """ % Script.scriptName) + Script.setUsageMessage(__doc__) Script.registerSwitch("r", "BanRead", " Ban only reading from the storage element") Script.registerSwitch("w", "BanWrite", " Ban writing 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..9e82bf6d21d 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py @@ -1,5 +1,22 @@ #!/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 +30,7 @@ @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.setUsageMessage(__doc__) 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..8671e4311f5 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py @@ -4,16 +4,48 @@ # 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 [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] + +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,25 +75,7 @@ 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.setUsageMessage(__doc__) Script.registerSwitch("f", "force", "Force overwrite of existing file", setOverwrite) Script.parseCommandLine(ignoreErrors=True) diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py index 83305171614..c12d0155627 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py @@ -1,8 +1,22 @@ #!/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 +26,7 @@ @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.setUsageMessage(__doc__) 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..6506a99ec7d 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,11 @@ #! /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 +19,7 @@ @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.setUsageMessage(__doc__) 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..c4a9fc32775 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py @@ -1,8 +1,22 @@ #! /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 +28,7 @@ @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.setUsageMessage(__doc__) 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..b4dd2e3b9d6 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** @@ -30,6 +31,9 @@ * Operations/DataManagement/ArchiveFiles/MaxFiles * ... +Usage:: + + dirac-dms-create-archive-request [option|cfgfile] """ from __future__ import absolute_import from __future__ import division @@ -100,10 +104,7 @@ def __init__(self): @staticmethod def setUsage(): """Set flags and options.""" - Script.setUsageMessage('\n'.join([__doc__, - 'Usage:', - ' %s [option|cfgfile]' % Script.scriptName, - ])) + Script.setUsageMessage(__doc__) @property def fcClient(self): 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..99f03a7d6fb 100644 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_moving_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_moving_request.py @@ -1,4 +1,5 @@ -"""Create and put Requests to move files. +""" +Create and put Requests to move files. List of operations: @@ -6,7 +7,9 @@ #. Check for Migration #. Remove all other replicas for these files +Usage:: + dirac-dms-create-moving-request [option|cfgfile] """ from __future__ import absolute_import from __future__ import division @@ -57,10 +60,7 @@ def __init__(self): @staticmethod def setUsage(): """Set flags and options.""" - Script.setUsageMessage('\n'.join([__doc__, - 'Usage:', - ' %s [option|cfgfile]' % Script.scriptName, - ])) + Script.setUsageMessage(__doc__) @property def fcClient(self): 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..f4048e4b4e0 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,20 @@ #!/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 [option|cfgfile] ... 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 +27,7 @@ @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.setUsageMessage(__doc__) 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..1f24c954137 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py @@ -1,5 +1,20 @@ #!/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,12 +33,7 @@ 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.setUsageMessage(__doc__) Script.parseCommandLine(ignoreErrors=False) for switch in Script.getUnprocessedSwitches(): diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py index 8ac7c47a760..d45f531829b 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py @@ -10,6 +10,21 @@ 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 +39,7 @@ @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.setUsageMessage(__doc__) 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..8ac2f38744f 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py @@ -1,8 +1,34 @@ #!/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,12 +37,7 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Launch the File Catalog shell - - Usage: - %s [option] - """ % Script.scriptName) + Script.setUsageMessage(__doc__) fcType = 'FileCatalog' Script.registerSwitch("f:", "file-catalog=", " Catalog client type to use (default %s)" % fcType) diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py index 61cb8f5421e..414729c208d 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py @@ -1,15 +1,25 @@ #!/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 +27,14 @@ 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.setUsageMessage(__doc__) 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..495542f3d7a 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,16 @@ #!/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 [option|cfgfile] ... 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 @@ -26,16 +37,7 @@ 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' - ])) + Script.setUsageMessage(__doc__) 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 4b87c7d73e7..f6f9fff9f03 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_protocol_matrix.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_protocol_matrix.py @@ -1,43 +1,46 @@ #!/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:: - You can have the following combinations:: + DIRAC-PROD>dirac-dms-protocol-matrix + Using sources: IN2P3-Disk, AnotherDisk + 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 + Using sources: IN2P3-User + Using target: IN2P3-Disk, AnotherDisk - 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 - DIRAC-PROD>dirac-dms-protocol-matrix --FromSE=IN2P3-User --Bidirection - Using sources: IN2P3-User - Using target: IN2P3-User +Usage:: + dirac-dms-protocol-matrix [option|cfgfile] """ from __future__ import absolute_import from __future__ import division @@ -55,9 +58,7 @@ 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'])) + Script.setUsageMessage(__doc__) from DIRAC.Core.Base.Script import parseCommandLine parseCommandLine() 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..9ae5e2132ec 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,8 +1,20 @@ #!/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 [option|cfgfile] 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 @@ -17,16 +29,7 @@ @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' - ])) + Script.setUsageMessage(__doc__) 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..82bcfde78ec 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,18 @@ ######################################################################## # $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 +28,7 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Remove the given file or a list of files from the File Catalog - - Usage: - %s - """ % Script.scriptName) - + Script.setUsageMessage(__doc__) 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..ebb2bb2a722 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,13 @@ #!/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 +24,7 @@ @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.setUsageMessage(__doc__) 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..bb17db00c28 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py @@ -1,5 +1,15 @@ #!/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 +22,7 @@ @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.setUsageMessage(__doc__) 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..c373fe4f4d4 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py @@ -1,8 +1,21 @@ #!/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 +25,7 @@ @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.setUsageMessage(__doc__) 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..86d178b7a97 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py @@ -1,5 +1,11 @@ #!/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 +21,7 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Get the given file replica metadata from the File Catalog - - Usage: - %s SE - """ % Script.scriptName) - + Script.setUsageMessage(__doc__) 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..362fa151103 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,17 @@ #!/bin/env python -"""Create and put 'ReplicateAndRegister' request.""" +""" +Create and put 'ReplicateAndRegister' request. + +Usage:: + + dirac-dms-replicate-and-register-request [option|cfgfile] 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,15 +35,7 @@ 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', - ])) + Script.setUsageMessage(__doc__) catalog = None Script.registerSwitch("C:", "Catalog=", "Catalog to use") diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py index 8b5efb3693f..8c38035182b 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py @@ -1,4 +1,11 @@ #!/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 +18,7 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Returns the LFN matching given GUIDs - Usage: - %s - """ % Script.scriptName) - + Script.setUsageMessage(__doc__) 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..6744529ed10 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_set_replica_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_set_replica_status.py @@ -1,6 +1,17 @@ #!/usr/bin/env python """ Set the status of the replicas of given files at the provided SE + +Usage:: + + dirac-dms-set-replica-status [option|cfgfile] ... 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 @@ -13,15 +24,7 @@ @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.setUsageMessage(__doc__) 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..06a131899f1 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,22 @@ #!/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,12 +61,7 @@ def main(): global noVOFlag global allVOsFlag - Script.setUsageMessage(""" -Get status of the available Storage Elements - -Usage: - %s [] -""" % Script.scriptName) + Script.setUsageMessage(__doc__) Script.registerSwitch("V:", "vo=", "Virtual Organization", setVO) Script.registerSwitch("a", "all", "All Virtual Organizations flag", setAllVO) diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py index 70436fd44e9..c01aa4d2125 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py @@ -1,10 +1,29 @@ #!/usr/bin/env python """ Get the list of all the user files. + +Usage:: + + dirac-dms-user-lfns [option|cfgfile] ... + +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,9 +45,7 @@ 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.setUsageMessage(__doc__) Script.parseCommandLine(ignoreErrors=False) diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py index 968e8dd7012..befa77bb93d 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py @@ -1,8 +1,20 @@ #!/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 +23,7 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Get the currently defined user data volume quotas - - Usage: - %s [options] - """ % Script.scriptName) - + Script.setUsageMessage(__doc__) 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..9aaaf24e867 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py @@ -3,14 +3,19 @@ # 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: +Usage:: dirac-admin-get-CAs (|)* + +Example:: + + $ dirac-admin-get-CAs """ from __future__ import absolute_import from __future__ import division diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py index 69830d92b4f..34593bdadf0 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py @@ -4,7 +4,22 @@ # 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 [option|cfgfile] ... 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 @@ -98,13 +113,7 @@ 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.setUsageMessage(__doc__) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py index 2f6383fe0f4..4420aeae076 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py @@ -1,4 +1,15 @@ #!/usr/bin/env python +""" +Usage:: + + dirac-admin-sysadmin-cli.py (|)* + +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 @@ -11,6 +22,7 @@ @DIRACScript() def main(): host = None + Script.setUsageMessage(__doc__) Script.registerSwitch("H:", "host=", " Target host") Script.parseCommandLine(ignoreErrors=False) for switch in Script.getUnprocessedSwitches(): diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py index 26f139b839e..cbe7dafa985 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py @@ -1,6 +1,14 @@ #!/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 +25,7 @@ @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.setUsageMessage(__doc__) 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..74510d90cb1 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py @@ -1,6 +1,14 @@ #!/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 +23,7 @@ @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.setUsageMessage(__doc__) 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..d9e3b18bdce 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,37 @@ #!/usr/bin/env python +""" +Usage:: + dirac-admin-users-with-proxy.py (|)* + +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$" @@ -36,6 +60,7 @@ def main(): params = Params() params.registerCLISwitches() + Script.setUsageMessage(__doc__) 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..3f15ad703a0 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py @@ -1,18 +1,27 @@ #!/usr/bin/env python """ Do the initial installation and configuration of a DIRAC component + +Usage:: + + dirac-install-component [option|cfgfile] ... 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,12 +63,7 @@ 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.setUsageMessage(__doc__) 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..3492232eef9 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py @@ -1,6 +1,15 @@ #!/usr/bin/env python """ Do the initial installation and configuration of a DIRAC service based on tornado + +Usage:: + + dirac-install-tornado-service [option|cfgfile] ... 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 +18,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,12 +68,7 @@ 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.setUsageMessage(__doc__) 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..514ead1de77 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py @@ -4,6 +4,10 @@ Populates the database with the current installations of components This script assumes that the InstalledComponentsDB, the ComponentMonitoring service and the Notification service are installed and running + +Usage:: + + dirac-populate-component-db [option|cfgfile] ... [debug] """ from __future__ import absolute_import from __future__ import division @@ -47,9 +51,7 @@ def main(): "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.setUsageMessage(__doc__) Script.parseCommandLine(ignoreErrors=False) args = Script.getPositionalArgs() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py index bd51bfedceb..72c755b5de0 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py @@ -1,6 +1,14 @@ #!/usr/bin/env python """ -command line tool to remove local and remote proxies +Command line tool to remove local and remote proxies + +Usage:: + + dirac-proxy-destroy.py (|)* + +Example:: + + $ dirac-proxy-destroy -a """ from __future__ import absolute_import from __future__ import division 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..6ac0baefc60 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_get_uploaded_info.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_get_uploaded_info.py @@ -3,6 +3,21 @@ # File : dirac-proxy-init.py # Author : Adrian Casajus ######################################################################## +""" +Usage:: + + dirac-proxy-get-uploaded-info.py (|)* + +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 @@ -38,7 +53,7 @@ def setUser(arg): def main(): global userName Script.registerSwitch("u:", "user=", "User to query (by default oneself)", setUser) - + Script.setUsageMessage(__doc__) 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..cb112dce338 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py @@ -3,7 +3,24 @@ # File : dirac-proxy-info.py # Author : Adrian Casajus ######################################################################## - +""" +Usage:: + + dirac-proxy-info (|)* + +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 @@ -66,6 +83,7 @@ def main(): params = Params() from DIRAC.Core.Base import Script + Script.setUsageMessage(__doc__) Script.registerSwitch("f:", "file=", "File to use as user key", params.setProxyLocation) Script.registerSwitch("i", "version", "Print version", params.showVersion) Script.registerSwitch("n", "novoms", "Disable VOMS", params.disableVOMS) diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py index 2718a555a57..2f41937002e 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py @@ -34,7 +34,7 @@ from DIRAC.FrameworkSystem.Client.BundleDeliveryClient import BundleDeliveryClient __RCSID__ = "$Id$" -Script.setUsageMessage(__doc__) + class Params(ProxyGeneration.CLIParams): @@ -250,6 +250,7 @@ def main(): piParams.registerCLISwitches() Script.disableCS() + Script.setUsageMessage(__doc__) Script.parseCommandLine(ignoreErrors=True) DIRAC.gConfig.setOptionValue("/DIRAC/Security/UseServerCertificate", "False") diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py index ba4e2fa16d7..0e9761dbd07 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py @@ -1,6 +1,15 @@ #!/usr/bin/env python """ - Restart DIRAC component using runsvctrl utility +Restart DIRAC component using runsvctrl utility + +Usage:: + + dirac-restart-component [option|cfgfile] ... [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 @@ -14,12 +23,7 @@ @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.setUsageMessage(__doc__) 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..0fc94a7d046 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py @@ -1,6 +1,15 @@ #!/usr/bin/env python """ Start DIRAC component using runsvctrl utility + +Usage:: + + dirac-start-component [option|cfgfile] ... [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 +24,7 @@ @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.setUsageMessage(__doc__) 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..49e6734174d 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py @@ -1,8 +1,24 @@ #!/usr/bin/env python """ Status of DIRAC components using runsvstat utility + +Usage:: + + dirac-status-component [option|cfgfile] ... [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 +30,7 @@ @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.setUsageMessage(__doc__) 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..3436ba20cc5 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py @@ -1,6 +1,15 @@ #!/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 [option|cfgfile] ... [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 @@ -12,12 +21,7 @@ @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.setUsageMessage(__doc__) Script.parseCommandLine() args = Script.getPositionalArgs() @@ -35,10 +39,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..85899937752 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py @@ -5,21 +5,20 @@ ######################################################################## """ - 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:: - Options: - There are no options. + 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. - 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 +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 """ from __future__ import print_function @@ -39,8 +38,7 @@ @DIRACScript() def main(): - Script.setUsageMessage(''.join(__doc__)) - + Script.setUsageMessage(__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..00c47ace4f6 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py @@ -1,20 +1,29 @@ #!/usr/bin/env python - """ Uninstallation of a DIRAC component + +Usage:: + + dirac-uninstall-component [option|cfgfile] ... 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,12 +44,7 @@ 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.setUsageMessage(__doc__) 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..3910119c3ab 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py @@ -1,5 +1,19 @@ #!/usr/bin/env python +""" +Add or Modify a Group info in DIRAC +Usage:: + + dirac-admin-add-group [option|cfgfile] ... 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 @@ -44,13 +58,7 @@ 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.setUsageMessage(__doc__) 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..05a2f8601bb 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py @@ -1,8 +1,25 @@ #!/usr/bin/env python +""" +Add or Modify a Host info in DIRAC + +Usage:: + + dirac-admin-add-host [option|cfgfile] ... 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 +56,7 @@ 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.setUsageMessage(__doc__) 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..30c30ae7017 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py @@ -1,5 +1,19 @@ #!/usr/bin/env python +""" +Add or Modify a User info in DIRAC +Usage:: + + dirac-admin-add-user [option|cfgfile] ... 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 +68,7 @@ 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.setUsageMessage(__doc__) 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..92f4ffc8550 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py @@ -4,7 +4,20 @@ # Author : Stuart Paterson ######################################################################## """ - Add Site to Active mask for current Setup +Add Site to Active mask for current Setup + +Usage:: + + dirac-admin-allow-site [option|cfgfile] ... 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 +34,7 @@ @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.setUsageMessage(__doc__) 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..0bbaf5a774b 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py @@ -4,7 +4,20 @@ # Author : Stuart Paterson ######################################################################## """ - Remove Site from Active mask for current Setup +Remove Site from Active mask for current Setup + +Usage:: + + dirac-admin-ban-site [option|cfgfile] ... 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 +27,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 +34,13 @@ @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.setUsageMessage(__doc__) 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..4d8ed04dea4 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py @@ -4,31 +4,40 @@ # Author : Vladimir Romanovsky ######################################################################## """ - Retrieve Site Associated to a given CE +Retrieve Site Associated to a given CE + +Usage:: + + dirac-admin-ce-info [option|cfgfile] ... 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.setUsageMessage(__doc__) 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..f1465b5f9f4 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py @@ -4,11 +4,24 @@ # Author : Adrian Casajus ######################################################################## """ - Remove User from Configuration +Remove User from Configuration + +Usage:: + + dirac-admin-delete-user [option|cfgfile] ... 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 +30,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... User ...' % Script.scriptName, - 'Arguments:', - ' User: User name'])) + Script.setUsageMessage(__doc__) 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..39721156a7b 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,16 @@ # File : dirac-admin-get-banned-sites # Author : Stuart Paterson ######################################################################## +""" +Usage:: + dirac-admin-get-banned-sites (|)* + +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 @@ -16,6 +25,7 @@ @DIRACScript() def main(): + Script.setUsageMessage(__doc__) Script.parseCommandLine(ignoreErrors=True) from DIRAC import gLogger, exit as DIRACExit 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..32d17f2faef 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,24 @@ # 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 [option|cfgfile] ... 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 +30,7 @@ @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.setUsageMessage(__doc__) 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..ad1aa856250 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,52 @@ # 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 [option|cfgfile] ... 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.setUsageMessage(__doc__) 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..cade8159583 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,47 @@ #!/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 [option|cfgfile] ... 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 +56,13 @@ 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.setUsageMessage(__doc__) 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..1ff973c6192 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,50 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve logging info of a Grid pilot -""" +Retrieve logging info of a Grid pilot + +Usage:: + + dirac-admin-get-pilot-logging-info [option|cfgfile] ... 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.setUsageMessage(__doc__) 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..13b5f44c03e 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,26 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve output of a Grid pilot +Retrieve output of a Grid pilot + +Usage:: + + dirac-admin-get-pilot-output [option|cfgfile] ... 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 +32,7 @@ @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.setUsageMessage(__doc__) 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..0fc2aca7a5d 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,28 @@ # 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 +32,7 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" - Get the list of sites enabled in the mask for job submission - - Usage: - %s [options] - """ % Script.scriptName) - + Script.setUsageMessage(__doc__) 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..57d8d4578b6 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py @@ -1,11 +1,23 @@ #!/usr/bin/env python ######################################################################## -# File : dirac-admin-list-users +# File : dirac-admin-list-hosts # Author : Adrian Casajus ######################################################################## +""" +Usage:: + + dirac-admin-list-hosts (|)* + +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 @@ -14,6 +26,7 @@ @DIRACScript() def main(): + Script.setUsageMessage(__doc__) Script.registerSwitch("e", "extended", "Show extended info") Script.parseCommandLine(ignoreErrors=True) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py b/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py index ff01b65eb04..6fce4be40a8 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py @@ -4,13 +4,30 @@ # 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 [option|cfgfile] ... [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 +35,14 @@ @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.setUsageMessage(__doc__) 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..9382d635412 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py @@ -4,7 +4,21 @@ # Author : Adrian Casajus ######################################################################## """ - Modify a user in the CS. +Modify a user in the CS. + +Usage:: + + dirac-admin-modify-user [option|cfgfile] ... 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 +35,7 @@ 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.setUsageMessage(__doc__) 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..886c95afe81 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py @@ -3,14 +3,37 @@ # File : dirac-admin-pilot-summary # Author : Stuart Paterson ######################################################################## - +""" +Usage:: + + dirac-admin-pilot-summary (|)* + +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..50e561a1fbc 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py @@ -4,7 +4,20 @@ # 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 [option|cfgfile] ... 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 +32,7 @@ @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.setUsageMessage(__doc__) 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..82fb6561ddc 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py @@ -4,7 +4,27 @@ # Author : Stuart Paterson ######################################################################## """ - Print the service ports for the specified setup +Print the service ports for the specified setup + +Usage:: + + dirac-admin-service-ports [option|cfgfile] ... [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 +39,7 @@ @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.setUsageMessage(__doc__) 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..f0c61e148a9 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,19 @@ # 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 [option|cfgfile] ... 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 +32,7 @@ @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.setUsageMessage(__doc__) 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..152e7648f38 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py @@ -4,7 +4,25 @@ # Author : Stuart Paterson ######################################################################## """ - Print Configuration information for a given Site +Print Configuration information for a given Site + +Usage:: + + dirac-admin-site-info [option|cfgfile] ... 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 +37,7 @@ @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.setUsageMessage(__doc__) 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..9bed48a626c 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,29 @@ #!/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 [option|cfgfile] ... 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 +33,7 @@ @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.setUsageMessage(__doc__) 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..1e6f483a6be 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,19 @@ # 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 [option|cfgfile] ... 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 @@ -20,15 +32,8 @@ @DIRACScript() def main(): + Script.setUsageMessage(__doc__) 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..4824d5af968 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py @@ -4,7 +4,21 @@ # 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 [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'}} """ from __future__ import print_function from __future__ import absolute_import @@ -19,11 +33,7 @@ @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.setUsageMessage(__doc__) 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..0e492115c9f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py @@ -4,7 +4,24 @@ # 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 [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'}} """ from __future__ import print_function from __future__ import absolute_import @@ -19,13 +36,7 @@ @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.setUsageMessage(__doc__) 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..7f7378650cd 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py @@ -4,7 +4,33 @@ # Author : Stuart Paterson ######################################################################## """ - Obtain replica metadata from file catalogue client. +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/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 +45,7 @@ @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.setUsageMessage(__doc__) 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..8a2550ced7a 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py @@ -4,7 +4,22 @@ # Author : Stuart Paterson ######################################################################## """ - Obtain replica information from file catalogue client. +Obtain replica information from file catalogue client. + +Usage:: + + dirac-admin-lfn-replicas [option|cfgfile] ... 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 +35,7 @@ @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.setUsageMessage(__doc__) 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..5ed09e8ef62 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py @@ -4,7 +4,16 @@ # 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 [option|cfgfile] ... 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 +28,7 @@ @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.setUsageMessage(__doc__) 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..51bf398bcec 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py @@ -4,7 +4,16 @@ # 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 [option|cfgfile] ... 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 +28,7 @@ @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.setUsageMessage(__doc__) 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..f3498ef16b0 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py @@ -4,7 +4,25 @@ # Author : Stuart Paterson ######################################################################## """ - Replicate an existing LFN to another Storage Element +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}}} """ from __future__ import print_function from __future__ import absolute_import @@ -19,14 +37,7 @@ @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.setUsageMessage(__doc__) 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..20942ee470d 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py +++ b/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py @@ -4,7 +4,42 @@ # Author : Stuart Paterson ######################################################################## """ - Ping the given DIRAC Service +Ping the given DIRAC Service + +Usage:: + + dirac-framework-ping-service [option|cfgfile] ... 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 +54,7 @@ @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.setUsageMessage(__doc__) 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..bbc0b7c110a 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py +++ b/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py @@ -1,6 +1,14 @@ #!/usr/bin/env python """ - Monitor the jobs present in the repository +Monitor the jobs present in the repository + +Usage:: + + dirac-repo-monitor [option|cfgfile] ... RepoDir + +Arguments:: + + RepoDir: Location of Job Repository """ from __future__ import print_function from __future__ import absolute_import @@ -15,11 +23,7 @@ @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.setUsageMessage(__doc__) 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..3af37b966fc 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py +++ b/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py @@ -3,7 +3,20 @@ # File : dirac-utils-file-adler ######################################################################## """ - Calculate alder32 of the supplied file +Calculate alder32 of the supplied file + +Usage:: + + dirac-utils-file-adler [option|cfgfile] ... 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 +24,13 @@ __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.setUsageMessage(__doc__) Script.parseCommandLine(ignoreErrors=False) files = Script.getPositionalArgs() if len(files) == 0: @@ -31,6 +38,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..4f8c5cfa7c5 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py +++ b/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py @@ -1,10 +1,23 @@ #!/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 [option|cfgfile] ... 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 +25,13 @@ __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.setUsageMessage(__doc__) Script.parseCommandLine(ignoreErrors=False) files = Script.getPositionalArgs() if len(files) == 0: @@ -32,6 +39,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..7c94ddb2389 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,23 @@ # 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 [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 """ from __future__ import print_function from __future__ import absolute_import @@ -23,13 +36,7 @@ @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.setUsageMessage(__doc__) 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..bd292b8e6ed 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,20 @@ # 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 [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 """ from __future__ import print_function from __future__ import absolute_import @@ -12,21 +25,13 @@ __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.setUsageMessage(__doc__) Script.parseCommandLine(ignoreErrors=True) args = Script.getPositionalArgs() @@ -35,6 +40,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..4acc4126f30 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py @@ -4,7 +4,53 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve attributes associated with the given DIRAC job +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'} """ from __future__ import print_function from __future__ import absolute_import @@ -19,11 +65,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... JobID ...' % Script.scriptName, - 'Arguments:', - ' JobID: DIRAC Job ID'])) + Script.setUsageMessage(__doc__) 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..5eb2f216ada 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py @@ -5,8 +5,20 @@ ######################################################################## """ Delete DIRAC job from WMS, if running it will be killed -""" +Usage:: + + dirac-wms-job-delete [option|cfgfile] ... 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 +27,20 @@ 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.setUsageMessage(__doc__) 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..ca2b20256e3 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,23 @@ #!/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 [option|cfgfile] ... 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 +34,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... JobID ...' % Script.scriptName, - 'Arguments:', - ' JobID: DIRAC Job ID'])) + Script.setUsageMessage(__doc__) 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..34de72497dc 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,36 @@ # 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 [option|cfgfile] ... 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 +50,7 @@ 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.setUsageMessage(__doc__) 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..46f6976c3de 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,21 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve output sandbox for a DIRAC job -""" +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 + +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 +35,7 @@ @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.setUsageMessage(__doc__) 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..0876adb8462 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,15 @@ # 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 [option|cfgfile] ... JobID ... + +Arguments:: + + JobID: DIRAC Job ID """ from __future__ import print_function from __future__ import absolute_import @@ -19,11 +27,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... JobID ...' % Script.scriptName, - 'Arguments:', - ' JobID: DIRAC Job ID'])) + Script.setUsageMessage(__doc__) 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..b0a2ab8a612 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py @@ -1,10 +1,35 @@ #!/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 [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'. """ from __future__ import print_function from __future__ import absolute_import @@ -19,11 +44,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... JobID ...' % Script.scriptName, - 'Arguments:', - ' JobID: DIRAC Job ID'])) + Script.setUsageMessage(__doc__) 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..3018f767513 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,34 @@ # 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 [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 """ from __future__ import print_function from __future__ import absolute_import @@ -19,11 +46,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... JobID ...' % Script.scriptName, - 'Arguments:', - ' JobID: DIRAC Job ID'])) + Script.setUsageMessage(__doc__) 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..889a091bdb3 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py @@ -4,7 +4,42 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve parameters associated to the given DIRAC job +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'} """ from __future__ import print_function @@ -22,11 +57,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... JobID ...' % Script.scriptName, - 'Arguments:', - ' JobID: DIRAC Job ID'])) + Script.setUsageMessage(__doc__) 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..051b6caab71 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py @@ -4,7 +4,19 @@ # Author : Stuart Paterson ######################################################################## """ - Peek StdOut of the given DIRAC job +Peek StdOut of the given DIRAC job + +Usage:: + + dirac-wms-job-delete [option|cfgfile] ... JobID ... + +Arguments:: + + JobID: DIRAC Job ID + +Example:: + + $ dirac-wms-job-peek 1 """ from __future__ import print_function from __future__ import absolute_import @@ -19,11 +31,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... JobID ...' % Script.scriptName, - 'Arguments:', - ' JobID: DIRAC Job ID'])) + Script.setUsageMessage(__doc__) 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..6abf75c90e4 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py @@ -1,10 +1,23 @@ #!/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 [option|cfgfile] ... 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 +32,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s [option|cfgfile] ... JobID ...' % Script.scriptName, - 'Arguments:', - ' JobID: DIRAC Job ID'])) + Script.setUsageMessage(__doc__) 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..be5b4301159 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py @@ -4,7 +4,20 @@ # Author : Stuart Paterson ######################################################################## """ - Retrieve status of the given DIRAC job +Retrieve status of the given DIRAC job + +Usage:: + + dirac-wms-job-status [option|cfgfile] ... 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 +26,23 @@ __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.setUsageMessage(__doc__) 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 +79,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..2855bbbee24 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py @@ -4,7 +4,20 @@ # Author : Stuart Paterson ######################################################################## """ - Submit jobs to DIRAC WMS +Submit jobs to DIRAC WMS + +Usage:: + + dirac-wms-job-submit [option|cfgfile] ... 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 +34,7 @@ @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.setUsageMessage(__doc__) 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..6a144aabb66 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,15 @@ # 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 [option|cfgfile] ... String ... + +Arguments:: + + String: string to search for """ from __future__ import print_function from __future__ import absolute_import @@ -30,11 +38,7 @@ 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.setUsageMessage(__doc__) 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..940c6853198 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py @@ -4,11 +4,20 @@ # Author : Stuart Paterson ######################################################################## """ - Select DIRAC jobs matching the given conditions +Select DIRAC jobs matching the given conditions + +Usage:: + + dirac-wms-job-status [option|cfgfile] ... 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 +37,7 @@ 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.setUsageMessage(__doc__) 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..b96d242dea9 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py @@ -1,8 +1,17 @@ #!/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 +26,7 @@ @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.setUsageMessage(__doc__) 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..efccfbbcbfa 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py @@ -1,7 +1,14 @@ #!/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 +23,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s prodID' % Script.scriptName, - 'Arguments:', - ' prodID: Production ID (mandatory)' - ])) - + Script.setUsageMessage(__doc__) 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..f6b845e2c18 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py @@ -1,7 +1,15 @@ #!/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 +24,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s prodID' % Script.scriptName, - 'Arguments:', - ' prodID: Production ID (mandatory)' - ])) - + Script.setUsageMessage(__doc__) 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..eadfc6ca671 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py @@ -1,7 +1,18 @@ #!/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 +23,14 @@ 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.setUsageMessage(__doc__) 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..be3e1092056 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py @@ -1,7 +1,10 @@ #!/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 +20,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1]])) - + Script.setUsageMessage(__doc__) 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..05937ca05b7 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py @@ -1,7 +1,18 @@ #!/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 +27,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s prodID' % Script.scriptName, - 'Arguments:', - ' prodID: Production ID (mandatory)' - ])) - + Script.setUsageMessage(__doc__) 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..05a76a3a60f 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py @@ -1,7 +1,18 @@ #!/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 +28,7 @@ @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.setUsageMessage(__doc__) 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..cfe5c748463 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py @@ -1,7 +1,18 @@ #!/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 +27,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s prodID' % Script.scriptName, - 'Arguments:', - ' prodID: Production ID (mandatory)' - ])) - + Script.setUsageMessage(__doc__) 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..e3567226cd7 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py @@ -1,7 +1,18 @@ #!/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 +27,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s prodID' % Script.scriptName, - 'Arguments:', - ' prodID: Production ID (mandatory)' - ])) - + Script.setUsageMessage(__doc__) 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..3780f4068c0 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,27 @@ #!/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 [option|cfgfile] +""" 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])) + Script.setUsageMessage(__doc__) + 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..05e0984a4d4 100755 --- a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py +++ b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py @@ -1,8 +1,15 @@ #!/bin/env python -""" show ReqDB summary """ +""" +Show ReqDB summary + +Usage:: + + dirac-rms-reqdb-summary [option|cfgfile] +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" from DIRAC.Core.Base import Script @@ -11,9 +18,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__, - 'Usage:', - ' %s [option|cfgfile]' % Script.scriptName])) + Script.setUsageMessage(__doc__) 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..8022f8ccf5f 100755 --- a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py +++ b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py @@ -1,8 +1,20 @@ #!/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 [option|cfgfile] [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,12 +58,7 @@ 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)'])) + Script.setUsageMessage(__doc__) 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..0ba6bcec05e 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py @@ -3,10 +3,12 @@ Script that dumps the DB information for the elements into the standard output. If returns information concerning the StatusType and Status attributes. -Usage: +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..c4af520d96c 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py @@ -3,15 +3,18 @@ Script that dumps the DB information for the elements into the standard output. If returns information concerning the StatusType and Status attributes. -Usage: +Usage:: + dirac-rss-query-db [option] -Arguments: - Queries: [select|add|modify|delete] - Elements: [site|resource|component|node] +Arguments:: + + 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..7eca4ab597c 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py @@ -2,14 +2,17 @@ """ Select/Add/Delete a new DownTime entry for a given Site or Service. -Usage: - dirac-rss-query-dtcache [option] +Usage:: -Queries: - [select|add|delete] + dirac-rss-query-dtcache [option] -Verbosity: - -o LogLevel=LEVEL NOTICE by default, levels available: INFO, DEBUG, VERBOSE.. +Queries:: + + [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_set_token.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py index 05fd2afa032..d0522f087b3 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py @@ -7,7 +7,8 @@ If not set, the token will be set to whatever username is defined on the proxy loaded while issuing this command. In the second case, the token lasts one day. -Usage: +Usage:: + dirac-rss-token --element=[Site|Resource] --name=[name] --reason=[some reason] """ from __future__ import absolute_import diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py index 1a341cb289d..fc55a831b7f 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py @@ -6,11 +6,13 @@ the RSS. Important: If the StatusType is not defined on the CS, it will set it to Banned ! -Usage: +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..09be2641dd1 100755 --- a/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py +++ b/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py @@ -1,6 +1,14 @@ #!/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,11 +34,7 @@ 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)'])) + Script.setUsageMessage(__doc__) def setCEName(args): global ceName diff --git a/src/DIRAC/Resources/scripts/dirac_resource_info.py b/src/DIRAC/Resources/scripts/dirac_resource_info.py index 20f5cdc2f37..dbb4bb4b5fe 100644 --- a/src/DIRAC/Resources/scripts/dirac_resource_info.py +++ b/src/DIRAC/Resources/scripts/dirac_resource_info.py @@ -1,6 +1,11 @@ #!/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,16 +22,7 @@ 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])) + Script.setUsageMessage(__doc__) ceFlag = False seFlag = False diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py index e8a2c69c17e..0cd3763e147 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py @@ -13,24 +13,28 @@ - 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.setUsageMessage(__doc__) 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..ea5fc900716 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py @@ -4,24 +4,29 @@ # 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.setUsageMessage(__doc__) 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..66715f02cf1 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py @@ -1,14 +1,23 @@ #! /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 [option|cfgfile] ... 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 +26,7 @@ @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.setUsageMessage(__doc__) 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..45df4bb7ecf 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py @@ -4,12 +4,26 @@ # 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,18 +33,7 @@ @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!'])) + Script.setUsageMessage(__doc__) def registerSwitches(): ''' diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py index ee02500aee8..b54ad8f5a8a 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py @@ -7,7 +7,7 @@ Reports breakdown of file(s) number/size in different staging states across Storage Elements. Currently used Cache per SE is also reported. (active pins) -Example: +Example:: dirac-stager-show-stats diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py index ffcd783bef3..e958a4e8894 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py @@ -7,24 +7,28 @@ - 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.setUsageMessage(__doc__) 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..aaec7379caa 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py @@ -1,15 +1,18 @@ #!/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 - 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:: - Usage: - dirac-production-diracrunjoblocal (job ID) - No parenthesis + 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 @@ -139,15 +142,10 @@ def __runJobLocally(jobID, basepath, vo): def main(): Script.parseCommandLine(ignoreErrors=False) + Script.setUsageMessage(__doc__) 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..4a02e616bfe 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py @@ -1,7 +1,10 @@ #!/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 +20,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s TransID ' % Script.scriptName - ])) - + Script.setUsageMessage(__doc__) 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..18206650377 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py @@ -1,5 +1,10 @@ #!/usr/bin/env python -""" Archive a transformation +""" +Archive a transformation + +Usage:: + + dirac-transformation-archive transID [transID] [transID] """ from __future__ import print_function @@ -16,7 +21,7 @@ def main(): parseCommandLine() if not getPositionalArgs(): - print('Usage: dirac-transformation-archive transID [transID] [transID]') + print(__doc__) sys.exit() else: transIDs = [int(arg) for arg in getPositionalArgs()] diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py index acfb5e4ca3e..d2c335181bc 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py @@ -1,5 +1,10 @@ #!/usr/bin/env python -""" Clean a tranformation +""" +Clean a tranformation + +Usage:: + + dirac-transformation-clean transID [transID] [transID] """ from __future__ import print_function @@ -19,7 +24,7 @@ def main(): from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient if not getPositionalArgs(): - print('Usage: dirac-transformation-clean transID [transID] [transID]') + print(__doc__) sys.exit() else: transIDs = [int(arg) for arg in getPositionalArgs()] diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py index 2484a5d7d20..db07c29a5a3 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py @@ -1,5 +1,10 @@ #!/usr/bin/env python -""" Command to launch the Transformation Shell +""" +Command to launch the Transformation Shell + +Usage:: + + dirac-transformation-cli [option] """ from __future__ import absolute_import from __future__ import division @@ -11,12 +16,7 @@ @DIRACScript() def main(): - Script.setUsageMessage(""" -Launch the Transformation shell - -Usage: - %s [option] -""" % Script.scriptName) + Script.setUsageMessage(__doc__) 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..95252931071 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py @@ -1,7 +1,11 @@ #!/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 +20,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([ - __doc__.split('\n')[1], - 'Usage:', - ' %s TransID' % Script.scriptName - ])) - + Script.setUsageMessage(__doc__) 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..a0b02235988 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py @@ -1,5 +1,11 @@ #!/bin/env python -"""Script to call the DataRecoveryAgent functionality by hand.""" +""" +Script to call the DataRecoveryAgent functionality by hand. + +Usage:: + + dirac-transformation-recover-data [option|cfgfile] ... +""" from __future__ import absolute_import from __future__ import division from __future__ import print_function @@ -28,9 +34,7 @@ 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])) + Script.setUsageMessage(__doc__) @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..b355e945576 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py @@ -1,5 +1,10 @@ #!/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 @@ -16,7 +21,7 @@ def main(): parseCommandLine() if not getPositionalArgs(): - print('Usage: dirac-transformation-remove-output transID [transID] [transID]') + print(__doc__) sys.exit() else: transIDs = [int(arg) for arg in getPositionalArgs()] diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py index 037e5072409..487ec487ddf 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py @@ -1,5 +1,10 @@ #!/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 @@ -16,7 +21,7 @@ def main(): parseCommandLine() if not getPositionalArgs(): - print('Usage: dirac-transformation-verify-outputdata transID [transID] [transID]') + print(__doc__) sys.exit() else: transIDs = [int(arg) for arg in getPositionalArgs()] diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py index 5b49af94d6e..b06a61f34f1 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py @@ -4,7 +4,11 @@ # 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 +22,7 @@ @DIRACScript() def main(): - Script.setUsageMessage('\n'.join([__doc__.split('\n')[1], - 'Usage:', - ' %s ' % Script.scriptName])) - + Script.setUsageMessage(__doc__) 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..131b1fa32e0 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,12 @@ #! /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