From 7be01761c0edcc5a84244a282b0a44aa8a305608 Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Sun, 14 Mar 2021 01:45:54 +0100 Subject: [PATCH 01/43] fix --- .../dirac_my_great_script.py | 3 +- .../DevelopingCommands/dirac_ping_info.py | 6 +- .../scripts/dirac_accounting_decode_fileid.py | 8 +- .../scripts/dirac_admin_accounting_cli.py | 8 +- .../Client/LocalConfiguration.py | 29 +- .../scripts/dirac_admin_add_resources.py | 8 +- .../scripts/dirac_admin_add_shifter.py | 10 +- .../scripts/dirac_admin_add_site.py | 10 +- .../scripts/dirac_admin_bdii_info.py | 149 ++++++++ .../dirac_admin_check_config_options.py | 39 +- .../scripts/dirac_admin_sort_cs_sites.py | 14 +- .../scripts/dirac_admin_voms_sync.py | 10 +- .../scripts/dirac_configuration_cli.py | 8 +- .../dirac_configuration_dump_local_cache.py | 12 +- .../scripts/dirac_configuration_shell.py | 4 +- .../Core/Tornado/scripts/tornado_start_CS.py | 12 +- .../Core/Tornado/scripts/tornado_start_all.py | 14 +- src/DIRAC/Core/Utilities/DIRACScript.py | 14 +- src/DIRAC/Core/scripts/dirac_agent.py | 19 +- src/DIRAC/Core/scripts/dirac_configure.py | 336 +++++++++--------- src/DIRAC/Core/scripts/dirac_executor.py | 19 +- .../scripts/dirac_externals_requirements.py | 10 +- src/DIRAC/Core/scripts/dirac_info.py | 14 +- src/DIRAC/Core/scripts/dirac_install_db.py | 10 +- .../Core/scripts/dirac_install_web_portal.py | 8 +- src/DIRAC/Core/scripts/dirac_platform.py | 2 +- src/DIRAC/Core/scripts/dirac_service.py | 23 +- src/DIRAC/Core/scripts/dirac_setup_site.py | 20 +- src/DIRAC/Core/scripts/dirac_version.py | 2 +- .../scripts/dirac_admin_allow_se.py | 24 +- .../scripts/dirac_admin_ban_se.py | 24 +- .../scripts/dirac_admin_user_quota.py | 8 +- .../scripts/dirac_dms_add_file.py | 12 +- .../scripts/dirac_dms_catalog_metadata.py | 10 +- .../dirac_dms_change_replica_status.py | 10 +- .../scripts/dirac_dms_clean_directory.py | 10 +- .../dirac_dms_create_archive_request.py | 26 +- .../dirac_dms_create_moving_request.py | 24 +- .../dirac_dms_create_removal_request.py | 10 +- .../scripts/dirac_dms_data_size.py | 12 +- .../scripts/dirac_dms_directory_sync.py | 16 +- .../scripts/dirac_dms_filecatalog_cli.py | 10 +- .../scripts/dirac_dms_find_lfns.py | 18 +- .../scripts/dirac_dms_move_replica_request.py | 12 +- .../scripts/dirac_dms_protocol_matrix.py | 3 +- .../dirac_dms_put_and_register_request.py | 12 +- .../scripts/dirac_dms_remove_catalog_files.py | 10 +- .../dirac_dms_remove_catalog_replicas.py | 10 +- .../scripts/dirac_dms_remove_files.py | 8 +- .../scripts/dirac_dms_remove_replicas.py | 10 +- .../scripts/dirac_dms_replica_metadata.py | 10 +- ...irac_dms_replicate_and_register_request.py | 14 +- .../scripts/dirac_dms_resolve_guid.py | 10 +- .../scripts/dirac_dms_set_replica_status.py | 10 +- .../scripts/dirac_dms_show_se_status.py | 12 +- .../scripts/dirac_dms_user_lfns.py | 22 +- .../scripts/dirac_dms_user_quota.py | 6 +- .../FrameworkSystem/Client/ProxyGeneration.py | 74 ++-- .../FrameworkSystem/Client/ProxyUpload.py | 38 +- .../scripts/dirac_admin_get_CAs.py | 8 +- .../scripts/dirac_admin_get_proxy.py | 37 +- .../scripts/dirac_admin_proxy_upload.py | 8 +- .../scripts/dirac_admin_sysadmin_cli.py | 10 +- .../scripts/dirac_admin_update_instance.py | 6 +- .../scripts/dirac_admin_update_pilot.py | 12 +- .../scripts/dirac_admin_users_with_proxy.py | 18 +- .../scripts/dirac_install_component.py | 14 +- .../scripts/dirac_install_tornado_service.py | 14 +- .../dirac_monitoring_get_components_status.py | 6 +- .../scripts/dirac_myproxy_upload.py | 12 +- .../scripts/dirac_populate_component_db.py | 6 +- .../scripts/dirac_proxy_destroy.py | 26 +- .../scripts/dirac_proxy_get_uploaded_info.py | 6 +- .../scripts/dirac_proxy_info.py | 26 +- .../scripts/dirac_proxy_init.py | 72 ++-- .../scripts/dirac_restart_component.py | 10 +- .../scripts/dirac_start_component.py | 10 +- .../scripts/dirac_status_component.py | 10 +- .../scripts/dirac_stop_component.py | 10 +- .../scripts/dirac_sys_sendmail.py | 6 +- .../scripts/dirac_uninstall_component.py | 10 +- .../scripts/dirac_admin_add_group.py | 24 +- .../scripts/dirac_admin_add_host.py | 30 +- .../scripts/dirac_admin_add_user.py | 30 +- .../scripts/dirac_admin_allow_site.py | 14 +- .../scripts/dirac_admin_ban_site.py | 14 +- .../Interfaces/scripts/dirac_admin_ce_info.py | 8 +- .../scripts/dirac_admin_delete_user.py | 8 +- .../scripts/dirac_admin_get_banned_sites.py | 4 +- .../dirac_admin_get_job_pilot_output.py | 8 +- .../scripts/dirac_admin_get_job_pilots.py | 8 +- .../scripts/dirac_admin_get_pilot_info.py | 10 +- .../dirac_admin_get_pilot_logging_info.py | 8 +- .../scripts/dirac_admin_get_pilot_output.py | 8 +- .../scripts/dirac_admin_get_site_mask.py | 4 +- .../scripts/dirac_admin_list_hosts.py | 10 +- .../scripts/dirac_admin_list_users.py | 10 +- .../scripts/dirac_admin_modify_user.py | 14 +- .../scripts/dirac_admin_pilot_summary.py | 6 +- .../scripts/dirac_admin_reset_job.py | 8 +- .../scripts/dirac_admin_service_ports.py | 6 +- .../scripts/dirac_admin_set_site_protocols.py | 12 +- .../scripts/dirac_admin_site_info.py | 8 +- .../scripts/dirac_admin_site_mask_logging.py | 8 +- .../dirac_admin_sync_users_from_file.py | 12 +- .../Interfaces/scripts/dirac_dms_get_file.py | 8 +- .../scripts/dirac_dms_lfn_accessURL.py | 8 +- .../scripts/dirac_dms_lfn_metadata.py | 8 +- .../scripts/dirac_dms_lfn_replicas.py | 12 +- .../scripts/dirac_dms_pfn_accessURL.py | 8 +- .../scripts/dirac_dms_pfn_metadata.py | 8 +- .../scripts/dirac_dms_replicate_lfn.py | 8 +- .../scripts/dirac_framework_ping_service.py | 10 +- .../scripts/dirac_framework_self_ping.py | 2 +- .../Interfaces/scripts/dirac_repo_monitor.py | 8 +- .../scripts/dirac_utils_file_adler.py | 8 +- .../scripts/dirac_utils_file_md5.py | 8 +- .../dirac_wms_get_normalized_queue_length.py | 8 +- .../dirac_wms_get_queue_normalization.py | 8 +- .../scripts/dirac_wms_job_attributes.py | 8 +- .../scripts/dirac_wms_job_delete.py | 14 +- .../scripts/dirac_wms_job_get_input.py | 12 +- .../scripts/dirac_wms_job_get_jdl.py | 14 +- .../scripts/dirac_wms_job_get_output.py | 14 +- .../scripts/dirac_wms_job_get_output_data.py | 12 +- .../Interfaces/scripts/dirac_wms_job_kill.py | 8 +- .../scripts/dirac_wms_job_logging_info.py | 8 +- .../scripts/dirac_wms_job_parameters.py | 8 +- .../Interfaces/scripts/dirac_wms_job_peek.py | 8 +- .../scripts/dirac_wms_job_reschedule.py | 8 +- .../scripts/dirac_wms_job_status.py | 14 +- .../scripts/dirac_wms_job_submit.py | 14 +- .../dirac_wms_jobs_select_output_search.py | 26 +- .../scripts/dirac_wms_select_jobs.py | 28 +- .../scripts/dirac_prod_add_trans.py | 8 +- .../scripts/dirac_prod_clean.py | 8 +- .../scripts/dirac_prod_delete.py | 8 +- .../scripts/dirac_prod_get.py | 8 +- .../scripts/dirac_prod_get_all.py | 4 +- .../scripts/dirac_prod_get_description.py | 8 +- .../scripts/dirac_prod_get_trans.py | 8 +- .../scripts/dirac_prod_start.py | 8 +- .../scripts/dirac_prod_stop.py | 8 +- .../scripts/dirac_rms_list_req_cache.py | 6 +- .../scripts/dirac_rms_reqdb_summary.py | 2 +- .../scripts/dirac_rms_request.py | 44 +-- .../scripts/dirac_rss_list_status.py | 30 +- .../scripts/dirac_rss_query_db.py | 26 +- .../scripts/dirac_rss_query_dtcache.py | 26 +- .../scripts/dirac_rss_set_status.py | 32 +- .../scripts/dirac_rss_set_token.py | 30 +- .../scripts/dirac_rss_sync.py | 32 +- .../scripts/dirac_resource_get_parameters.py | 8 +- .../Resources/scripts/dirac_resource_info.py | 10 +- .../scripts/dirac_stager_monitor_file.py | 10 +- .../scripts/dirac_stager_monitor_jobs.py | 8 +- .../scripts/dirac_stager_monitor_request.py | 8 +- .../scripts/dirac_stager_monitor_requests.py | 261 ++++++-------- .../scripts/dirac_stager_show_stats.py | 6 +- .../scripts/dirac_stager_stage_files.py | 43 ++- .../scripts/dirac_production_runjoblocal.py | 10 +- .../scripts/dirac_transformation_add_files.py | 8 +- .../scripts/dirac_transformation_archive.py | 8 +- .../scripts/dirac_transformation_clean.py | 8 +- .../scripts/dirac_transformation_cli.py | 4 +- .../scripts/dirac_transformation_get_files.py | 8 +- .../dirac_transformation_recover_data.py | 10 +- .../dirac_transformation_remove_output.py | 8 +- .../dirac_transformation_replication.py | 8 +- .../dirac_transformation_verify_outputdata.py | 8 +- .../scripts/dirac_admin_kill_pilot.py | 8 +- .../scripts/dirac_admin_pilot_logging_info.py | 8 +- .../scripts/dirac_admin_show_task_queues.py | 8 +- .../scripts/dirac_admin_sync_pilot.py | 6 +- .../scripts/dirac_jobexec.py | 10 +- .../scripts/dirac_wms_cpu_normalization.py | 10 +- .../scripts/dirac_wms_get_queue_cpu_time.py | 10 +- .../scripts/dirac_wms_get_wn.py | 24 +- .../scripts/dirac_wms_get_wn_parameters.py | 10 +- .../scripts/dirac_wms_match.py | 12 +- .../scripts/dirac_wms_pilot_job_info.py | 12 +- tests/CI/docker-compose.yml | 2 +- tests/CI/run_docker_setup.sh | 300 ++++++++++++++++ tests/Jenkins/dirac_ci.sh | 2 +- tests/Jenkins/utilities.sh | 8 +- 185 files changed, 1877 insertions(+), 1496 deletions(-) create mode 100755 src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py create mode 100755 tests/CI/run_docker_setup.sh diff --git a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_my_great_script.py b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_my_great_script.py index 5c1cfce3642..cc9ed62dc84 100644 --- a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_my_great_script.py +++ b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_my_great_script.py @@ -17,7 +17,7 @@ from DIRAC import S_OK, S_ERROR, gLogger, exit as DIRACExit from DIRAC.Core.Utilities.DIRACScript import DIRACScript -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script class Params(object): @@ -98,6 +98,7 @@ def parseSwitchesAndPositionalArguments(): # Get unprocessed switches switches = dict(Script.getUnprocessedSwitches()) + gLogger.info('This is the servicesList %s:' % servicesList) gLogger.debug("The switches used are:") map(gLogger.debug, switches.iteritems()) diff --git a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_ping_info.py b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_ping_info.py index 999e4997121..0363c684a1f 100644 --- a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_ping_info.py +++ b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_ping_info.py @@ -39,7 +39,7 @@ def setNumOfPingsToDo(self, value): @DIRACScript() -def main(): +def main(self): # Instantiate the params class cliParams = Params() @@ -49,10 +49,10 @@ def main(): Script.registerArgument(['System: system names']) # Parse the command line and initialize DIRAC - Script.parseCommandLine(ignoreErrors=False) + self.parseCommandLine(ignoreErrors=False) # Get the list of services - servicesList = Script.getPositionalArgs() + servicesList = self.getPositionalArgs() # Do something! gLogger.notice('Ping %s!' % ', '.join(servicesList)) diff --git a/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py b/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py index 99600451996..332e06d08d2 100755 --- a/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py +++ b/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py @@ -24,16 +24,16 @@ from six.moves.urllib import parse as urlparse from DIRAC import gLogger -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): +def main(self): from DIRAC.Core.Utilities.Plotting.FileCoding import extractRequestFromFileId - Script.parseCommandLine() + self.parseCommandLine() - fileIds = Script.getPositionalArgs() + fileIds = self.getPositionalArgs() for fileId in fileIds: # Try to find if it's a url diff --git a/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py b/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py index d0a09e8301c..81895a86c86 100755 --- a/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py +++ b/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py @@ -15,14 +15,14 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): - Script.localCfg.addDefaultEntry("LogLevel", "info") - Script.parseCommandLine() +def main(self): + self.localCfg.addDefaultEntry("LogLevel", "info") + self.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 c95060c82f7..0b7afc0f75e 100755 --- a/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py +++ b/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py @@ -298,31 +298,6 @@ def __checkMandatoryOptions(self): gLogger.exception() return S_ERROR(str(e)) - # TODO: Initialize if not previously initialized - def initialize(self, componentName): - """ - Make sure DIRAC is properly initialized - """ - if self.initialized: - return S_OK() - self.initialized = True - # Set that the command line has already been parsed - self.isParsed = True - if not self.componentType: - self.setConfigurationForScript(componentName) - try: - retVal = self.__addUserDataToConfiguration() - self.__initLogger(self.componentName, self.loggingSection) - if not retVal['OK']: - return retVal - retVal = self.__checkMandatoryOptions() - if not retVal['OK']: - return retVal - except Exception as e: - gLogger.exception() - return S_ERROR(str(e)) - return S_OK() - def __initLogger(self, componentName, logSection, forceInit=False): gLogger.initialize(componentName, logSection, forceInit=forceInit) @@ -484,8 +459,10 @@ def __addUserDataToConfiguration(self): if not self.isParsed: self.__parseCommandLine() + ######################### gConfigurationData.loadFile errorsList = self.__loadCFGFiles() + ######################### gRefresher.forceRefresh if gConfigurationData.getServers(): retVal = self.syncRemoteConfiguration() if not retVal['OK']: @@ -493,6 +470,7 @@ def __addUserDataToConfiguration(self): else: gLogger.warn("Running without remote configuration") + ######################### set currentSectionPath try: if self.componentType == "service": self.__setDefaultSection(getServiceSection(self.componentName)) @@ -513,6 +491,7 @@ def __addUserDataToConfiguration(self): except Exception as e: errorsList.append(str(e)) + ############################# get unprocessedSwitches self.unprocessedSwitches = [] for optionName, optionValue in self.parsedOptionList: diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py index 30b3735f686..19af23fe14f 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py @@ -17,7 +17,7 @@ import six -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC import gLogger, exit as DIRACExit from DIRAC.ConfigurationSystem.Client.Utilities import getGridCEs, getSiteUpdates @@ -28,7 +28,7 @@ from DIRAC.ConfigurationSystem.Client.Helpers.Registry import getVOOption -def processScriptSwitches(): +def processScriptSwitches(self): global vo, dry, doCEs, hostURL @@ -257,13 +257,13 @@ def handler(signum, frame): @DIRACScript() -def main(): +def main(self): signal.signal(signal.SIGTERM, handler) signal.signal(signal.SIGINT, handler) global vo, dry, doCEs, ceBdiiDict - processScriptSwitches() + processScriptSwitches(self) if not vo: gLogger.error('No VO specified') diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py index 8eb89636d1a..53f21c75aec 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py @@ -19,21 +19,21 @@ from __future__ import print_function __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.ConfigurationSystem.Client.CSAPI import CSAPI from DIRAC import exit as DIRACExit, gLogger @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() csAPI = CSAPI() if len(args) < 3: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) shifterRole = args[0] userName = args[1] diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py index ff23f95fcfd..671fefa55f8 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py @@ -26,7 +26,7 @@ import six -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC import exit as DIRACExit, gLogger from DIRAC.ConfigurationSystem.Client.Helpers.Resources import getDIRACSiteName @@ -34,12 +34,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 3: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) diracSiteName = args[0] gridSiteName = args[1] diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py new file mode 100755 index 00000000000..bcd38bcad1c --- /dev/null +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py @@ -0,0 +1,149 @@ +#! /usr/bin/env python +######################################################################## +# File : dirac-admin-bdii-info +# Author : Aresh Vedaee +######################################################################## +""" +Check info on BDII for a given CE or site + +Usage: + dirac-admin-bdii-info [options] ... + +Arguments: + Site: Name of the Site (i.e. CERN-PROD) + CE: Name of the CE (i.e. cccreamceli05.in2p3.fr) + info: Accepted values (ce|ce-state|ce-cluster|ce-vo|site) +""" +from __future__ import print_function +from __future__ import absolute_import +from __future__ import division + +__RCSID__ = "$Id$" + +import DIRAC +# from DIRAC.Core.Base import Script +from DIRAC.Core.Utilities.DIRACScript import DIRACScript +from DIRAC.Core.Security.ProxyInfo import getProxyInfo +from DIRAC.ConfigurationSystem.Client.Helpers.Registry import getVOForGroup + + +def registerSwitches(self): + ''' + Registers all switches that can be used while calling the script from the + command line interface. + ''' + + self.registerSwitch("H:", "host=", "BDII host") + self.registerSwitch("V:", "vo=", "vo") + + +def parseSwitches(self): + ''' + Parses the arguments passed by the user + ''' + + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() + + if not len(args) == 2: + self.showHelp() + + params = {} + params['ce'] = None + params['site'] = None + params['host'] = None + params['vo'] = None + params['info'] = args[0] + ret = getProxyInfo(disableVOMS=True) + + if ret['OK'] and 'group' in ret['Value']: + params['vo'] = getVOForGroup(ret['Value']['group']) + else: + self.gLogger.error('Could not determine VO') + self.showHelp() + + if params['info'] in ['ce', 'ce-state', 'ce-cluster', 'ce-vo']: + params['ce'] = args[1] + elif params['info'] in ['site']: + params['site'] = args[1] + else: + self.gLogger.error('Wrong argument value') + self.showHelp() + + for unprocSw in self.getUnprocessedSwitches(): + if unprocSw[0] in ("H", "host"): + params['host'] = unprocSw[1] + if unprocSw[0] in ("V", "vo"): + params['vo'] = unprocSw[1] + + return params + + +def getInfo(params): + ''' + Retrieve information from BDII + ''' + + from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin + diracAdmin = DiracAdmin() + + if params['info'] == 'ce': + result = diracAdmin.getBDIICE(params['ce'], host=params['host']) + if params['info'] == 'ce-state': + result = diracAdmin.getBDIICEState(params['ce'], useVO=params['vo'], host=params['host']) + if params['info'] == 'ce-cluster': + result = diracAdmin.getBDIICluster(params['ce'], host=params['host']) + if params['info'] == 'ce-vo': + result = diracAdmin.getBDIICEVOView(params['ce'], useVO=params['vo'], host=params['host']) + if params['info'] == 'site': + result = diracAdmin.getBDIISite(params['site'], host=params['host']) + + if not result['OK']: + print(result['Message']) + DIRAC.exit(2) + + return result + + +def showInfo(result, info): + ''' + Display information + ''' + + elements = result['Value'] + + for element in elements: + if info == 'ce' or info == 'all': + print("CE: %s \n{" % element.get('GlueSubClusterName', 'Unknown')) + + if info == 'ce-state' or info == 'all': + print("CE: %s \n{" % element.get('GlueCEUniqueID', 'Unknown')) + + if info == 'ce-cluster' or info == 'all': + print("Cluster: %s \n{" % element.get('GlueClusterName', 'Unknown')) + + if info == 'ce-vo' or info == 'all': + print("CEVOView: %s \n{" % element.get('GlueChunkKey', 'Unknown')) + + if info == 'site' or info == 'all': + print("Site: %s \n{" % element.get('GlueSiteName', 'Unknown')) + + for item in element.items(): + print(" %s: %s" % item) + print("}") + + +@DIRACScript() +def main(self): + # Script initialization + registerSwitches(self) + # registerUsageMessage() + params = parseSwitches(self) + result = getInfo(params) + showInfo(result, params['info']) + + DIRAC.exit(0) + + +if __name__ == "__main__": + main() 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 8b0676c4564..02c8331f522 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_check_config_options.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_check_config_options.py @@ -24,7 +24,7 @@ from diraccfg import CFG from DIRAC import gLogger, S_ERROR, S_OK, gConfig -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Utilities.List import fromChar @@ -40,6 +40,15 @@ def __init__(self): self.showAdded = False self.showMissingSections = False self.showMissingOptions = False + self.switches = [ + ("S:", "system=", "Systems to check, by default all of them are checked", self._setSystems), + ("M", "modified", "Show entries which differ from the default", self._setShowModified), + ("A", "added", "Show entries which do not exist in ConfigTemplate", self._setShowAdded), + ("U", "missingSection", "Show sections which do not exist in the current configuration", + self._setShowMissingSections), + ("O", "missingOption", "Show options which do not exist in the current configuration", + self._setShowMissingOptions) + ] def _setSystems(self, val): self.systems = fromChar(val) @@ -61,20 +70,6 @@ def _setShowMissingOptions(self, _): self.showMissingOptions = True return S_OK() - def _setSwitches(self): - Script.registerSwitch("S:", "system=", "Systems to check, by default all of them are checked", self._setSystems) - Script.registerSwitch("M", "modified", "Show entries which differ from the default", self._setShowModified) - Script.registerSwitch("A", "added", "Show entries which do not exist in ConfigTemplate", self._setShowAdded) - Script.registerSwitch("U", "missingSection", "Show sections which do not exist in the current configuration", - self._setShowMissingSections) - Script.registerSwitch("O", "missingOption", "Show options which do not exist in the current configuration", - self._setShowMissingOptions) - - Script.parseCommandLine(ignoreErrors=True) - if not any([self.showModified, self.showAdded, self.showMissingSections, self.showMissingOptions]): - LOG.error("\nERROR: Set at least one of the flags M A U O") - Script.showHelp() - def _check(self): """Obtain default configuration and current configuration and print the diff.""" cfg = CFG() @@ -198,14 +193,22 @@ def _printDiff(self, entry, level=''): def run(self): """Run configuration comparison.""" - self._setSwitches() + if not any([self.showModified, self.showAdded, self.showMissingSections, self.showMissingOptions]): + LOG.error("\nERROR: Set at least one of the flags M A U O") + return S_ERROR() + self._check() return S_OK() @DIRACScript() -def main(): - CheckConfig().run() +def main(self): + checkConfig = CheckConfig() + self.registerSwitches(checkConfig.switches) + self.parseCommandLine(ignoreErrors=True) + + if not checkConfig.run()['OK']: + self.showHelp() if __name__ == "__main__": diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py index 6fc9bcae334..5efb093e7e5 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py @@ -24,7 +24,7 @@ __RCSID__ = "$Id$" from DIRAC import gLogger, exit as DIRACExit -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Security.ProxyInfo import getProxyInfo from DIRAC.ConfigurationSystem.Client.Helpers.Registry import getPropertiesForGroup @@ -55,16 +55,16 @@ def country(arg): @DIRACScript() -def main(): - Script.registerSwitch( +def main(self): + self.registerSwitch( "C", "country", "Sort site names by country postfix (i.e. LCG.IHEP.cn, LCG.IN2P3.fr, LCG.IHEP.su)", sortBy) - Script.registerSwitch("R", "reverse", "Reverse the sort order", isReverse) + self.registerSwitch("R", "reverse", "Reverse the sort order", isReverse) - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() result = getProxyInfo() if not result["OK"]: @@ -123,7 +123,7 @@ def main(): DIRACExit(0) timestamp = toString(dateTime()) - stamp = "Site names are sorted by %s script at %s" % (Script.scriptName, timestamp) + stamp = "Site names are sorted by %s script at %s" % (self.scriptName, timestamp) cs.setOptionComment("/Resources/Sites", stamp) result = cs.commit() diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py index cf54609072b..e39017c7c4c 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py @@ -15,7 +15,7 @@ import six from DIRAC import gLogger, exit as DIRACExit, S_OK -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.ConfigurationSystem.Client.VOMS2CSSynchronizer import VOMS2CSSynchronizer from DIRAC.Core.Utilities.Proxy import executeWithUserProxy @@ -39,10 +39,10 @@ def setVO(value): @DIRACScript() -def main(): - Script.registerSwitch("V:", "vo=", "VO name", setVO) - Script.registerSwitch("D", "dryRun", "Dry run", setDryRun) - Script.parseCommandLine(ignoreErrors=True) +def main(self): + self.registerSwitch("V:", "vo=", "VO name", setVO) + self.registerSwitch("D", "dryRun", "Dry run", setDryRun) + self.parseCommandLine(ignoreErrors=True) @executeWithUserProxy def syncCSWithVOMS(vomsSync): diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py index b6af569a339..3642ecb34db 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py @@ -12,15 +12,15 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.ConfigurationSystem.Client.CSCLI import CSCLI @DIRACScript() -def main(): - Script.localCfg.addDefaultEntry("LogLevel", "fatal") - Script.parseCommandLine() +def main(self): + self.localCfg.addDefaultEntry("LogLevel", "fatal") + self.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 879fe8123a4..a9df8801388 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_dump_local_cache.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_dump_local_cache.py @@ -14,13 +14,13 @@ import sys import DIRAC -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): - Script.localCfg.addDefaultEntry("LogLevel", "fatal") +def main(self): + self.localCfg.addDefaultEntry("LogLevel", "fatal") fileName = "" @@ -36,9 +36,9 @@ def setRaw(args): raw = True return DIRAC.S_OK() - Script.registerSwitch("f:", "file=", "Dump Configuration data into ", setFilename) - Script.registerSwitch("r", "raw", "Do not make any modification to the data", setRaw) - Script.parseCommandLine() + self.registerSwitch("f:", "file=", "Dump Configuration data into ", setFilename) + self.registerSwitch("r", "raw", "Do not make any modification to the data", setRaw) + self.parseCommandLine() from DIRAC import gConfig, gLogger result = gConfig.dumpCFGAsLocalCache(fileName, raw) diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_shell.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_shell.py index 25223b11b4d..7829825e884 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_shell.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_shell.py @@ -17,8 +17,8 @@ @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() from DIRAC.ConfigurationSystem.Client.CSShellCLI import CSShellCLI shell = CSShellCLI() shell.cmdloop() diff --git a/src/DIRAC/Core/Tornado/scripts/tornado_start_CS.py b/src/DIRAC/Core/Tornado/scripts/tornado_start_CS.py index 0dd6badf18f..862101b23cd 100644 --- a/src/DIRAC/Core/Tornado/scripts/tornado_start_CS.py +++ b/src/DIRAC/Core/Tornado/scripts/tornado_start_CS.py @@ -29,7 +29,6 @@ def main(): from DIRAC.ConfigurationSystem.Client.PathFinder import getServiceSection from DIRAC.ConfigurationSystem.Client.ConfigurationData import gConfigurationData - from DIRAC.ConfigurationSystem.Client.LocalConfiguration import LocalConfiguration from DIRAC.ConfigurationSystem.private.Refresher import gRefresher from DIRAC.Core.Utilities.DErrno import includeExtensionErrors from DIRAC.Core.Tornado.Server.TornadoServer import TornadoServer @@ -38,12 +37,11 @@ def main(): if gConfigurationData.isMaster(): gRefresher.disable() - localCfg = LocalConfiguration() - localCfg.addMandatoryEntry("/DIRAC/Setup") - localCfg.addDefaultEntry("/DIRAC/Security/UseServerCertificate", "yes") - localCfg.addDefaultEntry("LogLevel", "INFO") - localCfg.addDefaultEntry("LogColor", True) - resultDict = localCfg.loadUserData() + self.localCfg.addMandatoryEntry("/DIRAC/Setup") + self.localCfg.addDefaultEntry("/DIRAC/Security/UseServerCertificate", "yes") + self.localCfg.addDefaultEntry("LogLevel", "INFO") + self.localCfg.addDefaultEntry("LogColor", True) + resultDict = self.localCfg.loadUserData() if not resultDict['OK']: gLogger.initialize("Tornado-CS", "/") gLogger.error("There were errors when loading configuration", resultDict['Message']) diff --git a/src/DIRAC/Core/Tornado/scripts/tornado_start_all.py b/src/DIRAC/Core/Tornado/scripts/tornado_start_all.py index 221c06de8b0..2231acbd15e 100644 --- a/src/DIRAC/Core/Tornado/scripts/tornado_start_all.py +++ b/src/DIRAC/Core/Tornado/scripts/tornado_start_all.py @@ -30,7 +30,6 @@ def main(): from DIRAC import gConfig from DIRAC.ConfigurationSystem.Client import PathFinder from DIRAC.ConfigurationSystem.Client.ConfigurationData import gConfigurationData - from DIRAC.ConfigurationSystem.Client.LocalConfiguration import LocalConfiguration from DIRAC.Core.Tornado.Server.TornadoServer import TornadoServer from DIRAC.Core.Utilities.DErrno import includeExtensionErrors from DIRAC.FrameworkSystem.Client.Logger import gLogger @@ -43,13 +42,12 @@ def main(): gLogger.fatal("You can't run the CS and services in the same server!") sys.exit(0) - localCfg = LocalConfiguration() - localCfg.setConfigurationForServer('Tornado/Tornado') - localCfg.addMandatoryEntry("/DIRAC/Setup") - localCfg.addDefaultEntry("/DIRAC/Security/UseServerCertificate", "yes") - localCfg.addDefaultEntry("LogLevel", "INFO") - localCfg.addDefaultEntry("LogColor", True) - resultDict = localCfg.loadUserData() + self.localCfg.setConfigurationForServer('Tornado/Tornado') + self.localCfg.addMandatoryEntry("/DIRAC/Setup") + self.localCfg.addDefaultEntry("/DIRAC/Security/UseServerCertificate", "yes") + self.localCfg.addDefaultEntry("LogLevel", "INFO") + self.localCfg.addDefaultEntry("LogColor", True) + resultDict = self.localCfg.loadUserData() if not resultDict['OK']: gLogger.initialize("Tornado", "/") gLogger.error("There were errors when loading configuration", resultDict['Message']) diff --git a/src/DIRAC/Core/Utilities/DIRACScript.py b/src/DIRAC/Core/Utilities/DIRACScript.py index 35db01aa4c2..5254f511c1b 100644 --- a/src/DIRAC/Core/Utilities/DIRACScript.py +++ b/src/DIRAC/Core/Utilities/DIRACScript.py @@ -8,6 +8,9 @@ import functools import six +import sys +import os.path +import inspect if six.PY3: from DIRAC.Core.Utilities.Extensions import entrypointToExtension, extensionsByPriority @@ -22,7 +25,12 @@ class DIRACScript(object): def __init__(self): """ c'tor """ - pass + self.scriptName = None + self.alreadyInitialized = False + self.doc = inspect.currentframe().f_back.f_globals['__doc__'] + self.localCfg = LocalConfiguration() + self.localCfg.setUsageMessage(self.doc) + self.showHelp = self.localCfg.showHelp def __call__(self, func=None): """Set the wrapped function or call the script @@ -39,7 +47,7 @@ def __call__(self, func=None): # Setuptools based installations aren't supported with Python 2 if six.PY2: - return self._func() # pylint: disable=not-callable + return self._func(self) # pylint: disable=not-callable # This is only available in Python 3.8+ so it has to be here for now from importlib import metadata # pylint: disable=no-name-in-module @@ -64,7 +72,7 @@ def __call__(self, func=None): if function_name is None: # TODO: This should an error once the integration tests modified to use pip install - return self._func() # pylint: disable=not-callable + return self._func(self) # pylint: disable=not-callable # raise NotImplementedError("Something is very wrong") # Call the entry_point from the extension with the highest priority diff --git a/src/DIRAC/Core/scripts/dirac_agent.py b/src/DIRAC/Core/scripts/dirac_agent.py index fed8ed6f1b1..4ea8d5a0f23 100755 --- a/src/DIRAC/Core/scripts/dirac_agent.py +++ b/src/DIRAC/Core/scripts/dirac_agent.py @@ -22,22 +22,19 @@ @DIRACScript() -def main(): - localCfg = LocalConfiguration() - localCfg.setUsageMessage(__doc__) - - positionalArgs = localCfg.getPositionalArguments() +def main(self): + positionalArgs = self.localCfg.getPositionalArguments() if len(positionalArgs) == 0: gLogger.fatal("You must specify which agent to run!") sys.exit(1) agentName = positionalArgs[0] - localCfg.setConfigurationForAgent(agentName) - localCfg.addMandatoryEntry("/DIRAC/Setup") - localCfg.addDefaultEntry("/DIRAC/Security/UseServerCertificate", "yes") - localCfg.addDefaultEntry("LogLevel", "INFO") - localCfg.addDefaultEntry("LogColor", True) - resultDict = localCfg.loadUserData() + self.localCfg.setConfigurationForAgent(agentName) + self.localCfg.addMandatoryEntry("/DIRAC/Setup") + self.localCfg.addDefaultEntry("/DIRAC/Security/UseServerCertificate", "yes") + self.localCfg.addDefaultEntry("LogLevel", "INFO") + self.localCfg.addDefaultEntry("LogColor", True) + resultDict = self.localCfg.loadUserData() if not resultDict['OK']: gLogger.error("There were errors when loading configuration", resultDict['Message']) sys.exit(1) diff --git a/src/DIRAC/Core/scripts/dirac_configure.py b/src/DIRAC/Core/scripts/dirac_configure.py index fafee58858c..3ebbdb2470d 100755 --- a/src/DIRAC/Core/scripts/dirac_configure.py +++ b/src/DIRAC/Core/scripts/dirac_configure.py @@ -85,116 +85,119 @@ __RCSID__ = "$Id$" - -class Params(object): - def __init__(self): - self.logLevel = None - self.setup = None - self.configurationServer = None - self.includeAllServers = False - self.gatewayServer = None - self.siteName = None - self.useServerCert = False - self.skipCAChecks = False - self.skipCADownload = False - self.useVersionsDir = False - self.architecture = None - self.localSE = None - self.ceName = None - self.vo = None - self.update = False - self.outputFile = '' - self.skipVOMSDownload = False - self.extensions = '' - - def setGateway(self, optionValue): - self.gatewayServer = optionValue - self.setServer(self.gatewayServer + '/Configuration/Server') - DIRAC.gConfig.setOptionValue(cfgInstallPath('Gateway'), self.gatewayServer) +@DIRACScript() +def main(self): + logLevel = None + setup = None + configurationServer = None + includeAllServers = False + gatewayServer = None + siteName = None + useServerCert = False + skipCAChecks = False + skipCADownload = False + useVersionsDir = False + architecture = None + localSE = None + ceName = None + vo = None + update = False + outputFile = '' + skipVOMSDownload = False + extensions = '' + + + def setGateway(optionValue): + global gatewayServer + gatewayServer = optionValue + setServer(gatewayServer + '/Configuration/Server') + DIRAC.gConfig.setOptionValue(cfgInstallPath('Gateway'), gatewayServer) return DIRAC.S_OK() - def setOutput(self, optionValue): - self.outputFile = optionValue + + def setOutput(optionValue): + global outputFile + outputFile = optionValue return DIRAC.S_OK() - def setServer(self, optionValue): - self.configurationServer = optionValue - DIRAC.gConfig.setOptionValue('/DIRAC/Configuration/Servers', self.configurationServer) - DIRAC.gConfig.setOptionValue(cfgInstallPath('ConfigurationServer'), self.configurationServer) + + def setServer(optionValue): + global configurationServer + configurationServer = optionValue + DIRAC.gConfig.setOptionValue('/DIRAC/Configuration/Servers', configurationServer) + DIRAC.gConfig.setOptionValue(cfgInstallPath('ConfigurationServer'), configurationServer) return DIRAC.S_OK() - def setAllServers(self, optionValue): - self.includeAllServers = True - def setSetup(self, optionValue): - self.setup = optionValue - DIRAC.gConfig.setOptionValue('/DIRAC/Setup', self.setup) - DIRAC.gConfig.setOptionValue(cfgInstallPath('Setup'), self.setup) + def setAllServers(optionValue): + global includeAllServers + includeAllServers = True + + + def setSetup(optionValue): + global setup + setup = optionValue + DIRAC.gConfig.setOptionValue('/DIRAC/Setup', setup) + DIRAC.gConfig.setOptionValue(cfgInstallPath('Setup'), setup) return DIRAC.S_OK() - def setSiteName(self, optionValue): - self.siteName = optionValue - Script.localCfg.addDefaultEntry('/LocalSite/Site', self.siteName) + + def setSiteName(optionValue): + global siteName + siteName = optionValue + self.localCfg.addDefaultEntry('/LocalSite/Site', siteName) DIRAC.__siteName = False - DIRAC.gConfig.setOptionValue(cfgInstallPath('SiteName'), self.siteName) + DIRAC.gConfig.setOptionValue(cfgInstallPath('SiteName'), siteName) return DIRAC.S_OK() - def setCEName(self, optionValue): - self.ceName = optionValue - DIRAC.gConfig.setOptionValue(cfgInstallPath('CEName'), self.ceName) - return DIRAC.S_OK() - def setServerCert(self, optionValue): - self.useServerCert = True - DIRAC.gConfig.setOptionValue(cfgInstallPath('UseServerCertificate'), self.useServerCert) + def setCEName(optionValue): + global ceName + ceName = optionValue + DIRAC.gConfig.setOptionValue(cfgInstallPath('CEName'), ceName) return DIRAC.S_OK() - def setSkipCAChecks(self, optionValue): - self.skipCAChecks = True - DIRAC.gConfig.setOptionValue(cfgInstallPath('SkipCAChecks'), self.skipCAChecks) - return DIRAC.S_OK() - def setSkipCADownload(self, optionValue): - self.skipCADownload = True - DIRAC.gConfig.setOptionValue(cfgInstallPath('SkipCADownload'), self.skipCADownload) + def setServerCert(optionValue): + global useServerCert + useServerCert = True + DIRAC.gConfig.setOptionValue(cfgInstallPath('UseServerCertificate'), useServerCert) return DIRAC.S_OK() - def setSkipVOMSDownload(self, optionValue): - self.skipVOMSDownload = True - DIRAC.gConfig.setOptionValue(cfgInstallPath('SkipVOMSDownload'), self.skipVOMSDownload) - return DIRAC.S_OK() - def setUseVersionsDir(self, optionValue): - self.useVersionsDir = True - DIRAC.gConfig.setOptionValue(cfgInstallPath('UseVersionsDir'), self.useVersionsDir) + def setSkipCAChecks(optionValue): + global skipCAChecks + skipCAChecks = True + DIRAC.gConfig.setOptionValue(cfgInstallPath('SkipCAChecks'), skipCAChecks) return DIRAC.S_OK() - def setArchitecture(self, optionValue): - self.architecture = optionValue - Script.localCfg.addDefaultEntry('/LocalSite/Architecture', self.architecture) - DIRAC.gConfig.setOptionValue(cfgInstallPath('Architecture'), self.architecture) - return DIRAC.S_OK() - def setLocalSE(self, optionValue): - self.localSE = optionValue - Script.localCfg.addDefaultEntry('/LocalSite/LocalSE', self.localSE) - DIRAC.gConfig.setOptionValue(cfgInstallPath('LocalSE'), self.localSE) + def setSkipCADownload(optionValue): + global skipCADownload + skipCADownload = True + DIRAC.gConfig.setOptionValue(cfgInstallPath('SkipCADownload'), skipCADownload) return DIRAC.S_OK() - def setVO(self, optionValue): - self.vo = optionValue - Script.localCfg.addDefaultEntry('/DIRAC/VirtualOrganization', self.vo) - DIRAC.gConfig.setOptionValue(cfgInstallPath('VirtualOrganization'), self.vo) + + def setSkipVOMSDownload(optionValue): + global skipVOMSDownload + skipVOMSDownload = True + DIRAC.gConfig.setOptionValue(cfgInstallPath('SkipVOMSDownload'), skipVOMSDownload) return DIRAC.S_OK() - def forceUpdate(self, optionValue): - self.update = True + + def setUseVersionsDir(optionValue): + global useVersionsDir + useVersionsDir = True + DIRAC.gConfig.setOptionValue(cfgInstallPath('UseVersionsDir'), useVersionsDir) return DIRAC.S_OK() - def setExtensions(self, optionValue): - self.extensions = optionValue - DIRAC.gConfig.setOptionValue('/DIRAC/Extensions', self.extensions) - DIRAC.gConfig.setOptionValue(cfgInstallPath('Extensions'), self.extensions) + + def setArchitecture(optionValue): + global architecture + architecture = optionValue + self.localCfg.addDefaultEntry('/LocalSite/Architecture', architecture) + DIRAC.gConfig.setOptionValue(cfgInstallPath('Architecture'), architecture) return DIRAC.S_OK() @@ -285,71 +288,60 @@ def runConfigurationWizard(params): print_formatted_text(HTML("Cancelled")) sys.exit(1) - # Apply the arguments to the params object - setup, csURL = result - params.setSetup(setup) - params.setServer(csURL) - params.setSkipCAChecks(True) - - # Do the actual configuration - runDiracConfigure(params) - - # Generate a new proxy without passing --nocs - result = subprocess.run( # pylint: disable=no-member - ["dirac-proxy-init", "--pwstdin"], - input=userPasswd, - encoding="utf-8", - check=False, - ) - sys.exit(result.returncode) + def setVO(optionValue): + global vo + vo = optionValue + self.localCfg.addDefaultEntry('/DIRAC/VirtualOrganization', vo) + DIRAC.gConfig.setOptionValue(cfgInstallPath('VirtualOrganization'), vo) + return DIRAC.S_OK() -@DIRACScript() -def main(): - Script.disableCS() - params = Params() - if six.PY3 and len(sys.argv) < 2: - runConfigurationWizard(params) - else: - runDiracConfigure(params) + + def forceUpdate(optionValue): + global update + update = True + return DIRAC.S_OK() -def runDiracConfigure(params): - Script.registerSwitch("S:", "Setup=", "Set as DIRAC setup", params.setSetup) - Script.registerSwitch("e:", "Extensions=", "Set as DIRAC extensions", params.setExtensions) - Script.registerSwitch("C:", "ConfigurationServer=", "Set as DIRAC configuration server", params.setServer) - Script.registerSwitch("I", "IncludeAllServers", "include all Configuration Servers", params.setAllServers) - Script.registerSwitch("n:", "SiteName=", "Set as DIRAC Site Name", params.setSiteName) - Script.registerSwitch("N:", "CEName=", "Determiner from ", params.setCEName) - Script.registerSwitch("V:", "VO=", "Set the VO name", params.setVO) + def setExtensions(optionValue): + global extensions + extensions = optionValue + DIRAC.gConfig.setOptionValue('/DIRAC/Extensions', extensions) + DIRAC.gConfig.setOptionValue(cfgInstallPath('Extensions'), extensions) + return DIRAC.S_OK() - Script.registerSwitch("W:", "gateway=", "Configure as DIRAC Gateway for the site", params.setGateway) + self.disableCS() - Script.registerSwitch("U", "UseServerCertificate", "Configure to use Server Certificate", params.setServerCert) - Script.registerSwitch("H", "SkipCAChecks", "Configure to skip check of CAs", params.setSkipCAChecks) - Script.registerSwitch("D", "SkipCADownload", "Configure to skip download of CAs", params.setSkipCADownload) - Script.registerSwitch("M", "SkipVOMSDownload", "Configure to skip download of VOMS info", params.setSkipVOMSDownload) + self.registerSwitch("S:", "Setup=", "Set as DIRAC setup", setSetup) + self.registerSwitch("e:", "Extensions=", "Set as DIRAC extensions", setExtensions) + self.registerSwitch("C:", "ConfigurationServer=", "Set as DIRAC configuration server", setServer) + self.registerSwitch("I", "IncludeAllServers", "include all Configuration Servers", setAllServers) + self.registerSwitch("n:", "SiteName=", "Set as DIRAC Site Name", setSiteName) + self.registerSwitch("N:", "CEName=", "Determiner from ", setCEName) + self.registerSwitch("V:", "VO=", "Set the VO name", setVO) - Script.registerSwitch("v", "UseVersionsDir", "Use versions directory", params.setUseVersionsDir) + self.registerSwitch("W:", "gateway=", "Configure as DIRAC Gateway for the site", setGateway) - Script.registerSwitch("A:", "Architecture=", "Configure /Architecture=", params.setArchitecture) - Script.registerSwitch("L:", "LocalSE=", "Configure LocalSite/LocalSE=", params.setLocalSE) + self.registerSwitch("U", "UseServerCertificate", "Configure to use Server Certificate", setServerCert) + self.registerSwitch("H", "SkipCAChecks", "Configure to skip check of CAs", setSkipCAChecks) + self.registerSwitch("D", "SkipCADownload", "Configure to skip download of CAs", setSkipCADownload) + self.registerSwitch("M", "SkipVOMSDownload", "Configure to skip download of VOMS info", setSkipVOMSDownload) - Script.registerSwitch( + self.registerSwitch("v", "UseVersionsDir", "Use versions directory", setUseVersionsDir) + + self.registerSwitch("A:", "Architecture=", "Configure /Architecture=", setArchitecture) + self.registerSwitch("L:", "LocalSE=", "Configure LocalSite/LocalSE=", setLocalSE) + + self.registerSwitch( "F", "ForceUpdate", "Force Update of cfg file (i.e. dirac.cfg) (otherwise nothing happens if dirac.cfg already exists)", params.forceUpdate) - Script.registerSwitch("O:", "output=", "output configuration file", params.setOutput) - - Script.setUsageMessage('\n'.join([ - __doc__.split('\n')[1], - '\nUsage:', - ' %s [options] ...\n' % Script.scriptName - ])) + self.registerSwitch("O:", "output=", "output configuration file", setOutput) - Script.parseCommandLine(ignoreErrors=True) + self.parseCommandLine(ignoreErrors=True) + args = self.getExtraCLICFGFiles() if not params.logLevel: params.logLevel = DIRAC.gConfig.getValue(cfgInstallPath('LogLevel'), '') @@ -454,13 +446,13 @@ def runDiracConfigure(params): if not params.useServerCert: DIRAC.gLogger.verbose('/DIRAC/Security/UseServerCertificate =', 'no') # Being sure it was not there before - Script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') - Script.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'no') + self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + self.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'no') else: DIRAC.gLogger.verbose('/DIRAC/Security/UseServerCertificate =', 'yes') # Being sure it was not there before - Script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') - Script.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') + self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + self.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') host = DIRAC.gConfig.getValue(cfgInstallPath("Host"), "") if host: @@ -469,14 +461,14 @@ def runDiracConfigure(params): if params.skipCAChecks: DIRAC.gLogger.verbose('/DIRAC/Security/SkipCAChecks =', 'yes') # Being sure it was not there before - Script.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') - Script.localCfg.addDefaultEntry('/DIRAC/Security/SkipCAChecks', 'yes') + self.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') + self.localCfg.addDefaultEntry('/DIRAC/Security/SkipCAChecks', 'yes') else: # Necessary to allow initial download of CA's if not params.skipCADownload: DIRAC.gConfig.setOptionValue('/DIRAC/Security/SkipCAChecks', 'yes') - if not params.skipCADownload: - Script.enableCS() + if not skipCADownload: + self.enableCS() try: dirName = os.path.join(DIRAC.rootPath, 'etc', 'grid-security', 'certificates') mkDir(dirName) @@ -492,16 +484,16 @@ def runDiracConfigure(params): except Exception as e: DIRAC.gLogger.error('Failed to sync CAs and CRLs: %s' % str(e)) - if not params.skipCAChecks: - Script.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') + if not skipCAChecks: + self.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') if params.ceName or params.siteName: # This is used in the pilot context, we should have a proxy, or a certificate, and access to CS if params.useServerCert: # Being sure it was not there before - Script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') - Script.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') - Script.enableCS() + self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + self.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') + self.enableCS() # Get the site resource section gridSections = DIRAC.gConfig.getSections('/Resources/Sites/') if not gridSections['OK']: @@ -527,25 +519,25 @@ def runDiracConfigure(params): if params.ceName in res['Value']: params.siteName = site break - if params.siteName: - DIRAC.gLogger.notice('Setting /LocalSite/Site = %s' % params.siteName) - Script.localCfg.addDefaultEntry('/LocalSite/Site', params.siteName) + if siteName: + DIRAC.gLogger.notice('Setting /LocalSite/Site = %s' % siteName) + self.localCfg.addDefaultEntry('/LocalSite/Site', siteName) DIRAC.__siteName = False - if params.ceName: - DIRAC.gLogger.notice('Setting /LocalSite/GridCE = %s' % params.ceName) - Script.localCfg.addDefaultEntry('/LocalSite/GridCE', params.ceName) - - if not params.localSE and params.siteName in sites: - params.localSE = getSEsForSite(params.siteName) - if params.localSE['OK'] and params.localSE['Value']: - params.localSE = ','.join(params.localSE['Value']) - DIRAC.gLogger.notice('Setting /LocalSite/LocalSE =', params.localSE) - Script.localCfg.addDefaultEntry('/LocalSite/LocalSE', params.localSE) + if ceName: + DIRAC.gLogger.notice('Setting /LocalSite/GridCE = %s' % ceName) + self.localCfg.addDefaultEntry('/LocalSite/GridCE', ceName) + + if not localSE and siteName in sites: + localSE = getSEsForSite(siteName) + if localSE['OK'] and localSE['Value']: + localSE = ','.join(localSE['Value']) + DIRAC.gLogger.notice('Setting /LocalSite/LocalSE =', localSE) + self.localCfg.addDefaultEntry('/LocalSite/LocalSE', localSE) break - if params.gatewayServer: - DIRAC.gLogger.verbose('/DIRAC/Gateways/%s =' % DIRAC.siteName(), params.gatewayServer) - Script.localCfg.addDefaultEntry('/DIRAC/Gateways/%s' % DIRAC.siteName(), params.gatewayServer) + if gatewayServer: + DIRAC.gLogger.verbose('/DIRAC/Gateways/%s =' % DIRAC.siteName(), gatewayServer) + self.localCfg.addDefaultEntry('/DIRAC/Gateways/%s' % DIRAC.siteName(), gatewayServer) # Create the local cfg if it is not yet there if not params.outputFile: @@ -559,28 +551,28 @@ def runDiracConfigure(params): if params.includeAllServers: # We need user proxy or server certificate to continue in order to get all the CS URLs - if not params.useServerCert: - Script.enableCS() + if not useServerCert: + self.enableCS() result = getProxyInfo() if not result['OK']: DIRAC.gLogger.notice('Configuration is not completed because no user proxy is available') DIRAC.gLogger.notice('Create one using dirac-proxy-init and execute again with -F option') sys.exit(1) else: - Script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') # When using Server Certs CA's will be checked, the flag only disables initial download # this will be replaced by the use of SkipCADownload - Script.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') - Script.enableCS() + self.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') + self.enableCS() DIRAC.gConfig.setOptionValue('/DIRAC/Configuration/Servers', ','.join(DIRAC.gConfig.getServersList())) DIRAC.gLogger.verbose('/DIRAC/Configuration/Servers =', ','.join(DIRAC.gConfig.getServersList())) if params.useServerCert: # always removing before dumping - Script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') - Script.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') - Script.localCfg.deleteOption('/DIRAC/Security/SkipVOMSDownload') + self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + self.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') + self.localCfg.deleteOption('/DIRAC/Security/SkipVOMSDownload') if params.update: DIRAC.gConfig.dumpLocalCFGToFile(params.outputFile) @@ -633,11 +625,11 @@ def runDiracConfigure(params): DIRAC.gLogger.exception("Could not generate vomses file") error = "Could not generate vomses file for VO %s" % voName - if params.useServerCert: - Script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + if useServerCert: + self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') # When using Server Certs CA's will be checked, the flag only disables initial download # this will be replaced by the use of SkipCADownload - Script.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') + self.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') if error: sys.exit(1) diff --git a/src/DIRAC/Core/scripts/dirac_executor.py b/src/DIRAC/Core/scripts/dirac_executor.py index 91a60f6f7df..848af5f5654 100755 --- a/src/DIRAC/Core/scripts/dirac_executor.py +++ b/src/DIRAC/Core/scripts/dirac_executor.py @@ -22,11 +22,8 @@ @DIRACScript() -def main(): - localCfg = LocalConfiguration() - localCfg.setUsageMessage(__doc__) - - positionalArgs = localCfg.getPositionalArguments() +def main(self): + positionalArgs = self.localCfg.getPositionalArguments() if len(positionalArgs) == 0: gLogger.fatal("You must specify which executor to run!") sys.exit(1) @@ -36,12 +33,12 @@ def main(): else: mainName = "Framework/MultiExecutor" - localCfg.setConfigurationForExecutor(mainName) - localCfg.addMandatoryEntry("/DIRAC/Setup") - localCfg.addDefaultEntry("/DIRAC/Security/UseServerCertificate", "yes") - localCfg.addDefaultEntry("LogLevel", "INFO") - localCfg.addDefaultEntry("LogColor", True) - resultDict = localCfg.loadUserData() + self.localCfg.setConfigurationForExecutor(mainName) + self.localCfg.addMandatoryEntry("/DIRAC/Setup") + self.localCfg.addDefaultEntry("/DIRAC/Security/UseServerCertificate", "yes") + self.localCfg.addDefaultEntry("LogLevel", "INFO") + self.localCfg.addDefaultEntry("LogColor", True) + resultDict = self.localCfg.loadUserData() if not resultDict['OK']: gLogger.fatal("There were errors when loading configuration", resultDict['Message']) sys.exit(1) diff --git a/src/DIRAC/Core/scripts/dirac_externals_requirements.py b/src/DIRAC/Core/scripts/dirac_externals_requirements.py index c83658f0def..e63e78aa4f4 100755 --- a/src/DIRAC/Core/scripts/dirac_externals_requirements.py +++ b/src/DIRAC/Core/scripts/dirac_externals_requirements.py @@ -23,7 +23,7 @@ import subprocess as commands from diraccfg import CFG -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC import gLogger, rootPath, S_OK @@ -47,11 +47,11 @@ def pipInstall(package, switches=""): @DIRACScript() -def main(): - Script.disableCS() +def main(self): + self.disableCS() - Script.registerSwitch("t:", "type=", "Installation type. 'server' by default.", setInstallType) - Script.parseCommandLine(ignoreErrors=True) + self.registerSwitch("t:", "type=", "Installation type. 'server' by default.", setInstallType) + self.parseCommandLine(ignoreErrors=True) # Collect all the requested python modules to install reqDict = {} diff --git a/src/DIRAC/Core/scripts/dirac_info.py b/src/DIRAC/Core/scripts/dirac_info.py index eb8b31cdf6b..ffece589fb5 100755 --- a/src/DIRAC/Core/scripts/dirac_info.py +++ b/src/DIRAC/Core/scripts/dirac_info.py @@ -34,29 +34,29 @@ @DIRACScript() -def main(): +def main(self): import os import DIRAC from DIRAC import gConfig - from DIRAC.Core.Base import Script + # from DIRAC.Core.Base import Script from DIRAC.Core.Security.ProxyInfo import getProxyInfo from DIRAC.ConfigurationSystem.Client.Helpers.Registry import getVOForGroup from DIRAC.Core.Utilities.PrettyPrint import printTable def version(arg): - Script.disableCS() + self.disableCS() print(DIRAC.version) DIRAC.exit(0) def platform(arg): - Script.disableCS() + self.disableCS() print(DIRAC.getPlatform()) DIRAC.exit(0) - Script.registerSwitch("v", "version", "print version of current DIRAC installation", version) - Script.registerSwitch("p", "platform", "print platform of current DIRAC installation", platform) - Script.parseCommandLine(ignoreErrors=True) + self.registerSwitch("v", "version", "print version of current DIRAC installation", version) + self.registerSwitch("p", "platform", "print platform of current DIRAC installation", platform) + self.parseCommandLine(ignoreErrors=True) records = [] diff --git a/src/DIRAC/Core/scripts/dirac_install_db.py b/src/DIRAC/Core/scripts/dirac_install_db.py index 8c08f6227c8..08dc6a9a72c 100755 --- a/src/DIRAC/Core/scripts/dirac_install_db.py +++ b/src/DIRAC/Core/scripts/dirac_install_db.py @@ -15,16 +15,16 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): - Script.parseCommandLine() - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine() + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) # Script imports from DIRAC import gConfig diff --git a/src/DIRAC/Core/scripts/dirac_install_web_portal.py b/src/DIRAC/Core/scripts/dirac_install_web_portal.py index 87e69a06b9e..11d8e6ea38f 100755 --- a/src/DIRAC/Core/scripts/dirac_install_web_portal.py +++ b/src/DIRAC/Core/scripts/dirac_install_web_portal.py @@ -12,14 +12,14 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): - Script.disableCS() - Script.parseCommandLine() +def main(self): + self.disableCS() + self.parseCommandLine() from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller diff --git a/src/DIRAC/Core/scripts/dirac_platform.py b/src/DIRAC/Core/scripts/dirac_platform.py index cc0e8a42526..19ef21fc665 100755 --- a/src/DIRAC/Core/scripts/dirac_platform.py +++ b/src/DIRAC/Core/scripts/dirac_platform.py @@ -156,7 +156,7 @@ def main(): from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() - def main(): + def main(self): print(getPlatformString()) diff --git a/src/DIRAC/Core/scripts/dirac_service.py b/src/DIRAC/Core/scripts/dirac_service.py index 4bdded1ff52..e42535d29db 100755 --- a/src/DIRAC/Core/scripts/dirac_service.py +++ b/src/DIRAC/Core/scripts/dirac_service.py @@ -25,24 +25,21 @@ @DIRACScript() -def main(): - localCfg = LocalConfiguration() - localCfg.setUsageMessage(__doc__) - - positionalArgs = localCfg.getPositionalArguments() +def main(self): + positionalArgs = self.localCfg.getPositionalArguments() if len(positionalArgs) == 0: gLogger.fatal("You must specify which server to run!") sys.exit(1) serverName = positionalArgs[0] - localCfg.setConfigurationForServer(serverName) - localCfg.addMandatoryEntry("Port") - # localCfg.addMandatoryEntry( "HandlerPath" ) - localCfg.addMandatoryEntry("/DIRAC/Setup") - localCfg.addDefaultEntry("/DIRAC/Security/UseServerCertificate", "yes") - localCfg.addDefaultEntry("LogLevel", "INFO") - localCfg.addDefaultEntry("LogColor", True) - resultDict = localCfg.loadUserData() + self.localCfg.setConfigurationForServer(serverName) + self.localCfg.addMandatoryEntry("Port") + # self.localCfg.addMandatoryEntry( "HandlerPath" ) + self.localCfg.addMandatoryEntry("/DIRAC/Setup") + self.localCfg.addDefaultEntry("/DIRAC/Security/UseServerCertificate", "yes") + self.localCfg.addDefaultEntry("LogLevel", "INFO") + self.localCfg.addDefaultEntry("LogColor", True) + resultDict = self.localCfg.loadUserData() if not resultDict['OK']: gLogger.initialize(serverName, "/") gLogger.error("There were errors when loading configuration", resultDict['Message']) diff --git a/src/DIRAC/Core/scripts/dirac_setup_site.py b/src/DIRAC/Core/scripts/dirac_setup_site.py index 204b436c7c6..a30f3a50c17 100755 --- a/src/DIRAC/Core/scripts/dirac_setup_site.py +++ b/src/DIRAC/Core/scripts/dirac_setup_site.py @@ -18,7 +18,7 @@ __RCSID__ = "$Id$" from DIRAC import S_OK -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -33,23 +33,23 @@ def setExitOnError(self, value): @DIRACScript() -def main(): +def main(self): cliParams = Params() - Script.disableCS() - Script.registerSwitch( + self.disableCS() + self.registerSwitch( "e", "exitOnError", "flag to exit on error of any component installation", cliParams.setExitOnError) - Script.addDefaultOptionValue('/DIRAC/Security/UseServerCertificate', 'yes') - Script.addDefaultOptionValue('LogLevel', 'INFO') - Script.parseCommandLine() - args = Script.getExtraCLICFGFiles() + self.addDefaultOptionValue('/DIRAC/Security/UseServerCertificate', 'yes') + self.addDefaultOptionValue('LogLevel', 'INFO') + self.parseCommandLine() + args = self.getExtraCLICFGFiles() if len(args) > 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) cfg = None if len(args): @@ -58,7 +58,7 @@ def main(): gComponentInstaller.exitOnError = cliParams.exitOnError - result = gComponentInstaller.setupSite(Script.localCfg, cfg) + result = gComponentInstaller.setupSite(self.localCfg, cfg) if not result['OK']: print("ERROR:", result['Message']) exit(-1) diff --git a/src/DIRAC/Core/scripts/dirac_version.py b/src/DIRAC/Core/scripts/dirac_version.py index 3cb0af19cc3..5766e5abd29 100755 --- a/src/DIRAC/Core/scripts/dirac_version.py +++ b/src/DIRAC/Core/scripts/dirac_version.py @@ -26,7 +26,7 @@ @DIRACScript() -def main(): +def main(self): parser = argparse.ArgumentParser( description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter, diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py index 74b56d9243b..3b85209aef6 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py @@ -14,12 +14,12 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): +def main(self): read = False write = False check = False @@ -27,18 +27,18 @@ def main(): site = '' mute = False - Script.registerSwitch("r", "AllowRead", " Allow only reading from the storage element") - Script.registerSwitch("w", "AllowWrite", " Allow only writing to the storage element") - Script.registerSwitch("k", "AllowCheck", " Allow only check access to the storage element") - Script.registerSwitch("v", "AllowRemove", " Allow only remove access to the storage element") - Script.registerSwitch("a", "All", " Allow all access to the storage element") - Script.registerSwitch("m", "Mute", " Do not send email") - Script.registerSwitch("S:", "Site=", " Allow all SEs associated to site") + self.registerSwitch("r", "AllowRead", " Allow only reading from the storage element") + self.registerSwitch("w", "AllowWrite", " Allow only writing to the storage element") + self.registerSwitch("k", "AllowCheck", " Allow only check access to the storage element") + self.registerSwitch("v", "AllowRemove", " Allow only remove access to the storage element") + self.registerSwitch("a", "All", " Allow all access to the storage element") + self.registerSwitch("m", "Mute", " Do not send email") + self.registerSwitch("S:", "Site=", " Allow all SEs associated to site") - Script.parseCommandLine(ignoreErrors=True) + self.parseCommandLine(ignoreErrors=True) - ses = Script.getPositionalArgs() - for switch in Script.getUnprocessedSwitches(): + ses = self.getPositionalArgs() + for switch in self.getUnprocessedSwitches(): if switch[0].lower() in ("r", "allowread"): read = True if switch[0].lower() in ("w", "allowwrite"): diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py index 79ebc0de761..951aaa7749a 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py @@ -15,12 +15,12 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): +def main(self): read = True write = True check = True @@ -28,20 +28,20 @@ def main(): sites = [] mute = False - Script.registerSwitch("r", "BanRead", " Ban only reading from the storage element") - Script.registerSwitch("w", "BanWrite", " Ban writing to the storage element") - Script.registerSwitch("k", "BanCheck", " Ban check access to the storage element") - Script.registerSwitch("v", "BanRemove", " Ban remove access to the storage element") - Script.registerSwitch("a", "All", " Ban all access to the storage element") - Script.registerSwitch("m", "Mute", " Do not send email") - Script.registerSwitch( + self.registerSwitch("r", "BanRead", " Ban only reading from the storage element") + self.registerSwitch("w", "BanWrite", " Ban writing to the storage element") + self.registerSwitch("k", "BanCheck", " Ban check access to the storage element") + self.registerSwitch("v", "BanRemove", " Ban remove access to the storage element") + self.registerSwitch("a", "All", " Ban all access to the storage element") + self.registerSwitch("m", "Mute", " Do not send email") + self.registerSwitch( "S:", "Site=", " Ban all SEs associate to site (note that if writing is allowed, check is always allowed)") - Script.parseCommandLine(ignoreErrors=True) + self.parseCommandLine(ignoreErrors=True) - ses = Script.getPositionalArgs() - for switch in Script.getUnprocessedSwitches(): + ses = self.getPositionalArgs() + for switch in self.getUnprocessedSwitches(): if switch[0].lower() in ("r", "banread"): write = False check = False diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py index 17cc9f30185..4bbf8c633a8 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py @@ -22,14 +22,14 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): - Script.parseCommandLine() - users = Script.getPositionalArgs() +def main(self): + self.parseCommandLine() + users = self.getPositionalArgs() from DIRAC import gLogger, gConfig diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py index 68a9ec3f1bc..46556a30b46 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py @@ -40,7 +40,7 @@ import os from DIRAC import S_OK -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript overwrite = False @@ -68,13 +68,13 @@ def getDict(item_list): @DIRACScript() -def main(): +def main(self): global overwrite - Script.registerSwitch("f", "force", "Force overwrite of existing file", setOverwrite) - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + self.registerSwitch("f", "force", "Force overwrite of existing file", setOverwrite) + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1 or len(args) > 4: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) from DIRAC.DataManagementSystem.Client.DataManager import DataManager from DIRAC import gLogger diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py index 10a83f8dd3f..b81af03c3a7 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py @@ -18,21 +18,21 @@ __RCSID__ = "$Id$" from DIRAC import exit as DIRACExit -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() from DIRAC.Resources.Catalog.FileCatalog import FileCatalog import os - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if not len(args) >= 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) else: inputFileName = args[0] catalogs = [] 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 cb3d063a7c0..876f04120dc 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_change_replica_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_change_replica_status.py @@ -12,20 +12,20 @@ __RCSID__ = "$Id$" from DIRAC import exit as DIRACExit -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() from DIRAC.Resources.Catalog.FileCatalog import FileCatalog catalog = FileCatalog() import os - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if not len(args) == 3: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) else: inputFileName = args[0] se = args[1] diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py index 5cc4e23e8f3..692115f9df5 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py @@ -20,17 +20,17 @@ import os from DIRAC import exit as DIRACExit, gLogger -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) != 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) inputFileName = args[0] 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 054ed4fbd88..479536556d5 100644 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_archive_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_archive_request.py @@ -41,7 +41,7 @@ from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations from DIRAC.Core.Utilities import DEncode from DIRAC.Core.Utilities.ReturnValues import returnSingleResult -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.FrameworkSystem.private.standardLogging.LogLevels import LogLevels from DIRAC.RequestManagementSystem.Client.File import File @@ -57,7 +57,7 @@ class CreateArchiveRequest(object): """Create the request to archive files.""" - def __init__(self): + def __init__(self, script): """Constructor.""" self._fcClient = None self._reqClient = None @@ -86,7 +86,7 @@ def __init__(self): ('', 'SourceOnly', 'Only treat files that are already at the Source-SE'), ('X', 'Execute', 'Put Requests, else dryrun'), ] - self.registerSwitchesAndParseCommandLine() + self.registerSwitchesAndParseCommandLine(script) self.switches['MaxSize'] = int(self.switches.setdefault('MaxSize', MAX_SIZE)) self.switches['MaxFiles'] = int(self.switches.setdefault('MaxFiles', MAX_FILES)) @@ -137,7 +137,7 @@ def lfnFolderPath(self): """Return the lfn folder path where to find the files of the request.""" return self.switches.get('Path', None) - def registerSwitchesAndParseCommandLine(self): + def registerSwitchesAndParseCommandLine(self, script): """Register the default plus additional parameters and parse options. :param list options: list of three tuple for options to add to the script @@ -145,13 +145,13 @@ def registerSwitchesAndParseCommandLine(self): :param str opName """ for short, longOption, doc in self.options: - Script.registerSwitch(short + ':' if short else '', longOption + '=', doc) + script.registerSwitch(short + ':' if short else '', longOption + '=', doc) for short, longOption, doc in self.flags: - Script.registerSwitch(short, longOption, doc) - self.switches[longOption] = False - Script.parseCommandLine() - if Script.getPositionalArgs(): - Script.showHelp(exitCode=1) + script.registerSwitch(short, longOption, doc) + script.switches[longOption] = False + script.parseCommandLine() + if script.getPositionalArgs(): + script.showHelp(exitCode=1) ops = Operations() if not ops.getValue('DataManagement/ArchiveFiles/Enabled', False): @@ -168,7 +168,7 @@ def registerSwitchesAndParseCommandLine(self): sLog.verbose('Found default value in the CS for %r with value %r' % (longOption, defaultValue)) self.switches[longOption] = defaultValue - for switch in Script.getUnprocessedSwitches(): + for switch in script.getUnprocessedSwitches(): for short, longOption, doc in self.options: if switch[0] == short or switch[0].lower() == longOption.lower(): sLog.verbose('Found switch %r with value %r' % (longOption, switch[1])) @@ -513,9 +513,9 @@ def _replicateSourceFiles(self, request, lfns): @DIRACScript() -def main(): +def main(self): try: - CAR = CreateArchiveRequest() + CAR = CreateArchiveRequest(self) CAR.run() except Exception as e: if LogLevels.getLevelValue(sLog.getLevel()) <= LogLevels.VERBOSE: 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 d8997eeb5c3..f745b1690d6 100644 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_moving_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_moving_request.py @@ -15,7 +15,7 @@ import DIRAC from DIRAC import gLogger -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Utilities.List import breakListIntoChunks from DIRAC.Core.Utilities.ReturnValues import returnSingleResult @@ -31,7 +31,7 @@ class CreateMovingRequest(object): """Create the request to move files from one SE to another.""" - def __init__(self): + def __init__(self, script): """Constructor.""" self.requests = [] self._reqClient = None @@ -48,7 +48,7 @@ def __init__(self): 'Ensure the LFNs are migrated to tape before removing any replicas'), ('X', 'Execute', 'Put Requests, else dryrun'), ] - self.registerSwitchesAndParseCommandLine() + self.registerSwitchesAndParseCommandLine(script) self.getLFNList() self.getLFNMetadata() @@ -88,7 +88,7 @@ def lfnFolderPath(self): """Return the lfn folder path where to find the files of the request.""" return self.switches.get('Path', None) - def registerSwitchesAndParseCommandLine(self): + def registerSwitchesAndParseCommandLine(self, script): """Register the default plus additional parameters and parse options. :param list options: list of three tuple for options to add to the script @@ -96,15 +96,15 @@ def registerSwitchesAndParseCommandLine(self): :param str opName """ for short, longOption, doc in self.options: - Script.registerSwitch(short + ':' if short else '', longOption + '=', doc) + script.registerSwitch(short + ':' if short else '', longOption + '=', doc) for short, longOption, doc in self.flags: - Script.registerSwitch(short, longOption, doc) + script.registerSwitch(short, longOption, doc) self.switches[longOption] = False - Script.parseCommandLine() - if Script.getPositionalArgs(): - Script.showHelp(exitCode=1) + script.parseCommandLine() + if script.getPositionalArgs(): + script.showHelp(exitCode=1) - for switch in Script.getUnprocessedSwitches(): + for switch in script.getUnprocessedSwitches(): for short, longOption, doc in self.options: if switch[0] == short or switch[0].lower() == longOption.lower(): sLog.verbose('Found switch %r with value %r' % (longOption, switch[1])) @@ -284,9 +284,9 @@ def putOrRunRequests(self): @DIRACScript() -def main(): +def main(self): try: - CMR = CreateMovingRequest() + CMR = CreateMovingRequest(self) CMR.run() except Exception as e: if LogLevels.getLevelValue(sLog.getLevel()) <= LogLevels.VERBOSE: 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 2dc726dd575..53febf2bc4c 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_removal_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_removal_request.py @@ -24,12 +24,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=False) +def main(self): + self.parseCommandLine(ignoreErrors=False) - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 2: - Script.showHelp() + self.showHelp() targetSE = args.pop(0) @@ -51,7 +51,7 @@ def main(): if not se.valid: print(se.errorReason) print() - Script.showHelp() + self.showHelp() from DIRAC.RequestManagementSystem.Client.Request import Request from DIRAC.RequestManagementSystem.Client.Operation import Operation diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py index 0b262023c0d..4d1927ba096 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py @@ -22,17 +22,17 @@ import os import DIRAC from DIRAC import gLogger -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): +def main(self): unit = 'GB' - Script.registerSwitch("u:", "Unit=", " Unit to use [default %s] (MB,GB,TB,PB)" % unit) + self.registerSwitch("u:", "Unit=", " Unit to use [default %s] (MB,GB,TB,PB)" % unit) - Script.parseCommandLine(ignoreErrors=False) - for switch in Script.getUnprocessedSwitches(): + self.parseCommandLine(ignoreErrors=False) + for switch in self.getUnprocessedSwitches(): if switch[0].lower() == "u" or switch[0].lower() == "unit": unit = switch[1] scaleDict = {'MB': 1000 * 1000.0, @@ -44,7 +44,7 @@ def main(): DIRAC.exit(2) scaleFactor = scaleDict[unit] - args = Script.getPositionalArgs() + args = self.getPositionalArgs() lfns = [] for inputFileName in args: if os.path.exists(inputFileName): diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py index 27c0142370b..de990d660c5 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py @@ -30,25 +30,25 @@ import os import DIRAC -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript __RCSID__ = "$Id$" @DIRACScript() -def main(): - Script.registerSwitch("D", "sync", "Make target directory identical to source") - Script.registerSwitch("j:", "parallel=", "Multithreaded download and upload") - Script.parseCommandLine(ignoreErrors=False) +def main(self): + self.registerSwitch("D", "sync", "Make target directory identical to source") + self.registerSwitch("j:", "parallel=", "Multithreaded download and upload") + self.parseCommandLine(ignoreErrors=False) - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 1 or len(args) > 3: - Script.showHelp() + self.showHelp() sync = False parallel = 1 - for switch in Script.getUnprocessedSwitches(): + for switch in self.getUnprocessedSwitches(): if switch[0].lower() == "s" or switch[0].lower() == "sync": sync = True if switch[0].lower() == "j" or switch[0].lower() == "parallel": diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py index 5c4ca7bc6c9..9222e5018ab 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py @@ -29,15 +29,15 @@ import sys -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): +def main(self): fcType = 'FileCatalog' - Script.registerSwitch("f:", "file-catalog=", " Catalog client type to use (default %s)" % fcType) - Script.parseCommandLine(ignoreErrors=False) + self.registerSwitch("f:", "file-catalog=", " Catalog client type to use (default %s)" % fcType) + self.parseCommandLine(ignoreErrors=False) from DIRAC import gConfig, exit as dexit from DIRAC.Resources.Catalog.FileCatalogFactory import FileCatalogFactory @@ -54,7 +54,7 @@ def main(): if res['OK']: fcType = res['Value'][0] - for switch in Script.getUnprocessedSwitches(): + for switch in self.getUnprocessedSwitches(): if switch[0].lower() == "f" or switch[0].lower() == "file-catalog": fcType = switch[1] diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py index 92b51e23dd0..53b99172473 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py @@ -20,13 +20,13 @@ from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): - from DIRAC.Core.Base import Script +def main(self): + # from DIRAC.Core.Base import Script - Script.registerSwitch('', 'Path=', ' Path to search for') - Script.registerSwitch('', 'SE=', ' (comma-separated list of) SEs/SE-groups to be searched') - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + self.registerSwitch('', 'Path=', ' Path to search for') + self.registerSwitch('', 'SE=', ' (comma-separated list of) SEs/SE-groups to be searched') + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() import DIRAC from DIRAC import gLogger @@ -36,7 +36,7 @@ def main(): path = '/' seList = None - for opt, val in Script.getUnprocessedSwitches(): + for opt, val in self.getUnprocessedSwitches(): if opt == 'Path': path = val elif opt == 'SE': @@ -55,9 +55,9 @@ def main(): typeDict.update(FILE_STANDARD_METAKEYS) if len(args) < 1: - print("Error: No argument provided\n%s:" % Script.scriptName) + print("Error: No argument provided\n%s:" % self.scriptName) gLogger.notice("MetaDataDictionary: \n%s" % str(typeDict)) - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) mq = MetaQuery(typeDict=typeDict) result = mq.setMetaQuery(args) 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 5c44782782f..f02453329ab 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_move_replica_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_move_replica_request.py @@ -20,7 +20,7 @@ import time from hashlib import md5 -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -35,17 +35,17 @@ def getLFNList(arg): @DIRACScript() -def main(): - from DIRAC.Core.Base.Script import parseCommandLine - parseCommandLine() +def main(self): + # from DIRAC.Core.Base.Script import parseCommandLine + self.parseCommandLine() import DIRAC from DIRAC import gLogger - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 3: - Script.showHelp() + self.showHelp() sourceSE = args[0] lfnList = getLFNList(args[1]) diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_protocol_matrix.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_protocol_matrix.py index 1b264ad4321..fbf7aac944c 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_protocol_matrix.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_protocol_matrix.py @@ -71,7 +71,8 @@ def main(): outputFile = '/tmp/protocol-matrix.csv' bidirection = False ftsOnly = False - for switch in Script.getUnprocessedSwitches(): + + for switch in self.getUnprocessedSwitches(): if switch[0] == 'FromSE': fromSE = switch[1].split(',') elif switch[0] == 'TargetSE': 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 1c2f554000c..76c00edd9bc 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 @@ -22,26 +22,26 @@ import os -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): - from DIRAC.Core.Base.Script import parseCommandLine - parseCommandLine() +def main(self): + # from DIRAC.Core.Base.Script import parseCommandLine + self.parseCommandLine() import DIRAC from DIRAC import gLogger - args = Script.getPositionalArgs() + args = self.getPositionalArgs() requestName = None LFN = None PFN = None targetSE = None if len(args) != 4: - Script.showHelp() + self.showHelp() else: requestName = args[0] LFN = args[1] 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 69a6cbc161f..d5a07323260 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_files.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_files.py @@ -18,15 +18,15 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC import exit as dexit from DIRAC import gLogger @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations allowUsers = Operations().getValue("DataManagement/AllowUserReplicaManagement", False) @@ -47,10 +47,10 @@ def main(): fc = FileCatalog() import os - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) else: inputFileName = args[0] 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 25ae349a428..4ca5c7b9574 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_replicas.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_replicas.py @@ -16,14 +16,14 @@ import os from DIRAC import exit as dexit -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC import gLogger @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations allowUsers = Operations().getValue("DataManagement/AllowUserReplicaManagement", False) @@ -42,9 +42,9 @@ def main(): from DIRAC.DataManagementSystem.Client.DataManager import DataManager dm = DataManager() - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 2: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) else: inputFileName = args[0] storageElementName = args[1] diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py index 221a5eee8d2..ec1ba9c0683 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py @@ -14,19 +14,19 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() import os import DIRAC from DIRAC import gLogger - args = Script.getPositionalArgs() + args = self.getPositionalArgs() lfns = [] for inputFileName in args: if os.path.exists(inputFileName): diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py index 3786fe63674..eca13003da6 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py @@ -17,13 +17,13 @@ __RCSID__ = "$Id$" from DIRAC import exit as DIRACExit -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() from DIRAC.Core.Utilities.List import breakListIntoChunks from DIRAC.DataManagementSystem.Client.DataManager import DataManager @@ -31,10 +31,10 @@ def main(): import os inputFileName = "" storageElementNames = [] - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 2: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) else: inputFileName = args[0] storageElementNames = args[1:] diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py index 9fb8c1ef50a..727a9513a7f 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py @@ -14,20 +14,20 @@ import os from DIRAC import exit as DIRACExit -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() from DIRAC import gLogger from DIRAC.DataManagementSystem.Client.DataManager import DataManager - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if not len(args) == 2: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) else: inputFileName = args[0] storageElement = args[1] 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 230f9689b92..c4cdfd70579 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 @@ -15,7 +15,7 @@ from __future__ import print_function __RCSID__ = "$Id$" import os -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC import gLogger import DIRAC @@ -32,20 +32,20 @@ def getLFNList(arg): @DIRACScript() -def main(): +def main(self): catalog = None - Script.registerSwitch("C:", "Catalog=", "Catalog to use") - Script.parseCommandLine() - for switch in Script.getUnprocessedSwitches(): + self.registerSwitch("C:", "Catalog=", "Catalog to use") + self.parseCommandLine() + for switch in self.getUnprocessedSwitches(): if switch[0] == "C" or switch[0].lower() == "catalog": catalog = switch[1] - args = Script.getPositionalArgs() + args = self.getPositionalArgs() requestName = None targetSEs = None if len(args) < 3: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) requestName = args[0] lfnList = getLFNList(args[1]) diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py index 412e3788b94..7b1dcd8d6c4 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py @@ -11,20 +11,20 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() import DIRAC from DIRAC import gLogger - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) != 1: - Script.showHelp() + self.showHelp() guids = args[0] try: 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 d0f55c2b6c7..def5d5384e4 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_set_replica_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_set_replica_status.py @@ -17,22 +17,22 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=False) +def main(self): + self.parseCommandLine(ignoreErrors=False) import DIRAC from DIRAC import gLogger from DIRAC.Resources.Catalog.FileCatalog import FileCatalog import os - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if not len(args) == 3: - Script.showHelp() + self.showHelp() inputFileName = args[0] storageElement = args[1] 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 e4969c6881e..f44199a8d3c 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_show_se_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_show_se_status.py @@ -20,7 +20,7 @@ from __future__ import division from DIRAC import S_OK, exit as DIRACexit -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript __RCSID__ = "$Id$" @@ -54,16 +54,16 @@ def setNoVO(arg): @DIRACScript() -def main(): +def main(self): global vo global noVOFlag global allVOsFlag - Script.registerSwitch("V:", "vo=", "Virtual Organization", setVO) - Script.registerSwitch("a", "all", "All Virtual Organizations flag", setAllVO) - Script.registerSwitch("n", "noVO", "No Virtual Organizations assigned flag", setNoVO) + self.registerSwitch("V:", "vo=", "Virtual Organization", setVO) + self.registerSwitch("a", "all", "All Virtual Organizations flag", setAllVO) + self.registerSwitch("n", "noVO", "No Virtual Organizations assigned flag", setNoVO) - Script.parseCommandLine() + self.parseCommandLine() from DIRAC import gConfig, gLogger from DIRAC.ResourceStatusSystem.Client.ResourceStatus import ResourceStatus diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py index 5957f4180ea..b53f2c5163f 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py @@ -21,28 +21,28 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): +def main(self): days = 0 months = 0 years = 0 wildcard = None baseDir = '' emptyDirsFlag = False - Script.registerSwitch("D:", "Days=", "Match files older than number of days [%s]" % days) - Script.registerSwitch("M:", "Months=", "Match files older than number of months [%s]" % months) - Script.registerSwitch("Y:", "Years=", "Match files older than number of years [%s]" % years) - Script.registerSwitch("w:", "Wildcard=", "Wildcard for matching filenames [All]") - Script.registerSwitch("b:", "BaseDir=", "Base directory to begin search (default /[vo]/user/[initial]/[username])") - Script.registerSwitch("e", "EmptyDirs", "Create a list of empty directories") + self.registerSwitch("D:", "Days=", "Match files older than number of days [%s]" % days) + self.registerSwitch("M:", "Months=", "Match files older than number of months [%s]" % months) + self.registerSwitch("Y:", "Years=", "Match files older than number of years [%s]" % years) + self.registerSwitch("w:", "Wildcard=", "Wildcard for matching filenames [All]") + self.registerSwitch("b:", "BaseDir=", "Base directory to begin search (default /[vo]/user/[initial]/[username])") + self.registerSwitch("e", "EmptyDirs", "Create a list of empty directories") - Script.parseCommandLine(ignoreErrors=False) + self.parseCommandLine(ignoreErrors=False) - for switch in Script.getUnprocessedSwitches(): + for switch in self.getUnprocessedSwitches(): if switch[0] == "D" or switch[0].lower() == "days": days = int(switch[1]) if switch[0] == "M" or switch[0].lower() == "months": @@ -101,7 +101,7 @@ def isOlderThan(cTimeStruct, days): if not baseDir: if not vo: gLogger.error('Could not determine VO') - Script.showHelp() + self.showHelp() baseDir = '/%s/user/%s/%s' % (vo, username[0], username) baseDir = baseDir.rstrip('/') diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py index 8dde56d801b..f89b6ab289a 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py @@ -15,13 +15,13 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=False) +def main(self): + self.parseCommandLine(ignoreErrors=False) import DIRAC from DIRAC import gLogger, gConfig diff --git a/src/DIRAC/FrameworkSystem/Client/ProxyGeneration.py b/src/DIRAC/FrameworkSystem/Client/ProxyGeneration.py index 5717f3acfd7..11aba2c8269 100644 --- a/src/DIRAC/FrameworkSystem/Client/ProxyGeneration.py +++ b/src/DIRAC/FrameworkSystem/Client/ProxyGeneration.py @@ -9,7 +9,7 @@ import sys from prompt_toolkit import prompt from DIRAC import S_OK, S_ERROR, gLogger -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.NTP import getClockDeviation __RCSID__ = "$Id$" @@ -17,21 +17,40 @@ class CLIParams(object): - proxyLifeTime = 86400 - diracGroup = False - proxyStrength = 1024 - limitedProxy = False - strict = False - summary = False - certLoc = False - keyLoc = False - proxyLoc = False - checkWithCS = True - stdinPasswd = False - userPasswd = "" - checkClock = True - embedDefaultGroup = True - rfc = True + def __init__(self): + self.proxyLifeTime = 86400 + self.diracGroup = False + self.proxyStrength = 1024 + self.limitedProxy = False + self.strict = False + self.summary = False + self.certLoc = False + self.keyLoc = False + self.proxyLoc = False + self.checkWithCS = True + self.stdinPasswd = False + self.userPasswd = "" + self.checkClock = True + self.embedDefaultGroup = True + self.rfc = True + + self.proxyGenerationSwitches = [ + ("v:", "valid=", "Valid HH:MM for the proxy. By default is 24 hours", self.setProxyLifeTime), + ("g:", "group=", "DIRAC Group to embed in the proxy", self.setDIRACGroup), + ("b:", "strength=", "Set the proxy strength in bytes", self.setProxyStrength), + ("l", "limited", "Generate a limited proxy", self.setProxyLimited), + ("t", "strict", "Fail on each error. Treat warnings as errors.", self.setStrict), + ("S", "summary", "Enable summary output when generating proxy", self.setSummary), + ("C:", "Cert=", "File to use as user certificate", self.setCertLocation), + ("K:", "Key=", "File to use as user key", self.setKeyLocation), + ("u:", "out=", "File to write as proxy", self.setProxyLocation), + ("x", "nocs", "Disable CS check", self.setDisableCSCheck), + ("p", "pwstdin", "Get passwd from stdin", self.setStdinPasswd), + ("i", "version", "Print version", self.showVersion), + ("j", "noclockcheck", "Disable checking if time is ok", self.disableClockCheck), + ("r", "rfc", "Create an RFC proxy, true by default, deprecated flag", self.setRFC), + ("L", "legacy", "Create a legacy non-RFC proxy", self.setNoRFC) + ] def setProxyLifeTime(self, arg): """ Set proxy lifetime @@ -225,32 +244,13 @@ def disableClockCheck(self, _arg): self.checkClock = False return S_OK() - def registerCLISwitches(self): - """ Register CLI switches - """ - Script.registerSwitch("v:", "valid=", "Valid HH:MM for the proxy. By default is 24 hours", self.setProxyLifeTime) - Script.registerSwitch("g:", "group=", "DIRAC Group to embed in the proxy", self.setDIRACGroup) - Script.registerSwitch("b:", "strength=", "Set the proxy strength in bytes", self.setProxyStrength) - Script.registerSwitch("l", "limited", "Generate a limited proxy", self.setProxyLimited) - Script.registerSwitch("t", "strict", "Fail on each error. Treat warnings as errors.", self.setStrict) - Script.registerSwitch("S", "summary", "Enable summary output when generating proxy", self.setSummary) - Script.registerSwitch("C:", "Cert=", "File to use as user certificate", self.setCertLocation) - Script.registerSwitch("K:", "Key=", "File to use as user key", self.setKeyLocation) - Script.registerSwitch("u:", "out=", "File to write as proxy", self.setProxyLocation) - Script.registerSwitch("x", "nocs", "Disable CS check", self.setDisableCSCheck) - Script.registerSwitch("p", "pwstdin", "Get passwd from stdin", self.setStdinPasswd) - Script.registerSwitch("i", "version", "Print version", self.showVersion) - Script.registerSwitch("j", "noclockcheck", "Disable checking if time is ok", self.disableClockCheck) - Script.registerSwitch("r", "rfc", "Create an RFC proxy, true by default, deprecated flag", self.setRFC) - Script.registerSwitch("L", "legacy", "Create a legacy non-RFC proxy", self.setNoRFC) - from DIRAC.Core.Security.X509Chain import X509Chain # pylint: disable=import-error from DIRAC.ConfigurationSystem.Client.Helpers import Registry from DIRAC.Core.Security import Locations -def generateProxy(params): +def generateProxy(params, script): """ Generate proxy :param params: parameters @@ -332,7 +332,7 @@ def generateProxy(params): rfc=params.rfc) gLogger.info("Contacting CS...") - retVal = Script.enableCS() + retVal = script.enableCS() if not retVal['OK']: gLogger.warn(retVal['Message']) if 'Unauthorized query' in retVal['Message']: diff --git a/src/DIRAC/FrameworkSystem/Client/ProxyUpload.py b/src/DIRAC/FrameworkSystem/Client/ProxyUpload.py index de3a7cc894b..7b8b143fbce 100644 --- a/src/DIRAC/FrameworkSystem/Client/ProxyUpload.py +++ b/src/DIRAC/FrameworkSystem/Client/ProxyUpload.py @@ -11,21 +11,31 @@ import DIRAC from DIRAC import gLogger -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script __RCSID__ = "$Id$" class CLIParams(object): - proxyLifeTime = 2592000 - certLoc = False - keyLoc = False - proxyLoc = False - onTheFly = False - stdinPasswd = False - rfcIfPossible = False - userPasswd = "" + def __init__(self): + self.proxyLifeTime = 2592000 + self.certLoc = False + self.keyLoc = False + self.proxyLoc = False + self.onTheFly = False + self.stdinPasswd = False + self.rfcIfPossible = False + self.userPasswd = "" + self.proxyUploadSwitches = [ + ("v:", "valid=", "Valid HH:MM for the proxy. By default is one month", self.setProxyLifeTime), + ("C:", "Cert=", "File to use as user certificate", self.setCertLocation), + ("K:", "Key=", "File to use as user key", self.setKeyLocation), + ("P:", "Proxy=", "File to use as proxy", self.setProxyLocation), + ("f", "onthefly", "Generate a proxy on the fly", self.setOnTheFly), + ("p", "pwstdin", "Get passwd from stdin", self.setStdinPasswd), + ("i", "version", "Print version", self.showVersion) + ] def __str__(self): data = [] @@ -85,16 +95,6 @@ def showVersion(self, arg): sys.exit(0) return DIRAC.S_OK() - def registerCLISwitches(self): - Script.registerSwitch("v:", "valid=", "Valid HH:MM for the proxy. By default is one month", self.setProxyLifeTime) - Script.registerSwitch("C:", "Cert=", "File to use as user certificate", self.setCertLocation) - Script.registerSwitch("K:", "Key=", "File to use as user key", self.setKeyLocation) - Script.registerSwitch("P:", "Proxy=", "File to use as proxy", self.setProxyLocation) - Script.registerSwitch("f", "onthefly", "Generate a proxy on the fly", self.setOnTheFly) - Script.registerSwitch("p", "pwstdin", "Get passwd from stdin", self.setStdinPasswd) - Script.registerSwitch("i", "version", "Print version", self.showVersion) - Script.addDefaultOptionValue("LogLevel", "always") - from DIRAC import S_ERROR from DIRAC.Core.Security import Locations diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py index 49f1e77b967..99ae56d6d49 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py @@ -17,7 +17,7 @@ from __future__ import print_function import DIRAC -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.FrameworkSystem.Client.BundleDeliveryClient import BundleDeliveryClient @@ -25,9 +25,9 @@ @DIRACScript() -def main(): - Script.addDefaultOptionValue('/DIRAC/Security/SkipCAChecks', 'yes') - Script.parseCommandLine(ignoreErrors=True) +def main(self): + self.addDefaultOptionValue('/DIRAC/Security/SkipCAChecks', 'yes') + self.parseCommandLine(ignoreErrors=True) bdc = BundleDeliveryClient() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py index fe26f14d58a..76c0a543f91 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py @@ -38,11 +38,19 @@ class Params(object): - limited = False - proxyPath = False - proxyLifeTime = 86400 - enableVOMS = False - vomsAttr = None + def __init__(self): + self.limited = False + self.proxyPath = False + self.proxyLifeTime = 86400 + self.enableVOMS = False + self.vomsAttr = None + self.switches = [ + ("v:", "valid=", "Valid HH:MM for the proxy. By default is 24 hours", self.setProxyLifeTime), + ("l", "limited", "Get a limited proxy", self.setLimited), + ("u:", "out=", "File to write as proxy", self.setProxyLocation), + ("a", "voms", "Get proxy with VOMS extension mapped to the DIRAC group", self.automaticVOMS), + ("m:", "vomsAttr=", "VOMS attribute to require", self.setVOMSAttr) + ] def setLimited(self, args): """ Set limited @@ -98,26 +106,17 @@ def setVOMSAttr(self, arg): self.vomsAttr = arg return S_OK() - def registerCLISwitches(self): - """ Register CLI switches - """ - Script.registerSwitch("v:", "valid=", "Valid HH:MM for the proxy. By default is 24 hours", self.setProxyLifeTime) - Script.registerSwitch("l", "limited", "Get a limited proxy", self.setLimited) - Script.registerSwitch("u:", "out=", "File to write as proxy", self.setProxyLocation) - Script.registerSwitch("a", "voms", "Get proxy with VOMS extension mapped to the DIRAC group", self.automaticVOMS) - Script.registerSwitch("m:", "vomsAttr=", "VOMS attribute to require", self.setVOMSAttr) - @DIRACScript() -def main(): +def main(self): params = Params() - params.registerCLISwitches() + self.registerSwitches(params.switches) - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) != 2: - Script.showHelp() + self.showHelp() userGroup = str(args[1]) userDN = str(args[0]) diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py index b7114bdfde1..bde7df70822 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py @@ -17,17 +17,17 @@ import sys -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.FrameworkSystem.Client.ProxyUpload import CLIParams, uploadProxy @DIRACScript() -def main(): +def main(self): cliParams = CLIParams() - cliParams.registerCLISwitches() + self.registerSwitches(cliParams.proxyUploadSwitches) - Script.parseCommandLine() + self.parseCommandLine() retVal = uploadProxy(cliParams) if not retVal['OK']: diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py index 764fae3ecf6..c439c6cd129 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py @@ -13,16 +13,16 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(): +def main(self): host = None - Script.registerSwitch("H:", "host=", " Target host") - Script.parseCommandLine(ignoreErrors=False) - for switch in Script.getUnprocessedSwitches(): + self.registerSwitch("H:", "host=", " Target host") + self.parseCommandLine(ignoreErrors=False) + for switch in self.getUnprocessedSwitches(): if switch[0].lower() == "h" or switch[0].lower() == "host": host = switch[1] diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py index 55463dcdd4a..87136d46ac9 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py @@ -17,7 +17,7 @@ from io import open import DIRAC -from DIRAC.Core.Base import Script +# from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -29,7 +29,7 @@ def main(): " excluded from update") Script.registerSwitch("", "retry=", "Number of retry attempts on hosts that have failed to update") - Script.parseCommandLine(ignoreErrors=False) + self.parseCommandLine(ignoreErrors=False) args = Script.getPositionalArgs() if len(args) < 1 or len(args) > 3: @@ -40,7 +40,7 @@ def main(): hosts = [] excludeHosts = [] - for switch in Script.getUnprocessedSwitches(): + for switch in self.getUnprocessedSwitches(): if switch[0] == "hosts": hosts = switch[1] if switch[0] == "excludeHosts": diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py index 9e3b8488e4d..0be04411f45 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py @@ -20,23 +20,23 @@ @DIRACScript() -def main(): - Script.registerSwitch( +def main(self): + self.registerSwitch( "v:", "vo=", "Location of pilot version in CS /Operations//Pilot/Version" " (default value specified in CS under /DIRAC/DefaultSetup)" ) - Script.parseCommandLine(ignoreErrors=False) + self.parseCommandLine(ignoreErrors=False) - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 1 or len(args) > 2: - Script.showHelp() + self.showHelp() version = args[0] vo = None - for switch in Script.getUnprocessedSwitches(): + for switch in self.getUnprocessedSwitches(): if switch[0] == "v" or switch[0] == "vo": vo = switch[1] 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 45c1ed6f10c..9568b8c5ccc 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_users_with_proxy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_users_with_proxy.py @@ -35,9 +35,10 @@ class Params(object): - limited = False - proxyPath = False - proxyLifeTime = 3600 + def __init__(self): + self.limited = False + self.proxyPath = False + self.proxyLifeTime = 3600 def setProxyLifeTime(self, arg): try: @@ -48,16 +49,13 @@ def setProxyLifeTime(self, arg): return DIRAC.S_ERROR("Can't parse time argument") return DIRAC.S_OK() - def registerCLISwitches(self): - Script.registerSwitch("v:", "valid=", "Required HH:MM for the users", self.setProxyLifeTime) - @DIRACScript() -def main(): +def main(self): params = Params() - params.registerCLISwitches() - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + self.registerCLISwitch(("v:", "valid=", "Required HH:MM for the users", prams.setProxyLifeTime)) + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() result = gProxyManager.getDBContents() if not result['OK']: print("Can't retrieve list of users: %s" % result['Message']) diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py index deda9bcfc54..c5afedae6ff 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py @@ -49,7 +49,7 @@ def setSpecialOption(optVal): @DIRACScript() -def main(): +def main(self): global overwrite global specialOptions global module @@ -58,17 +58,17 @@ def main(): from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller gComponentInstaller.exitOnError = True - 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.parseCommandLine() - args = Script.getPositionalArgs() + self.registerSwitch("w", "overwrite", "Overwrite the configuration in the global CS", setOverwrite) + self.registerSwitch("m:", "module=", "Python module name for the component code", setModule) + self.registerSwitch("p:", "parameter=", "Special component option ", setSpecialOption) + self.parseCommandLine() + args = self.getPositionalArgs() if len(args) == 1: args = args[0].split('/') if len(args) != 2: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) system = args[0] component = args[1] diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py b/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py index 5ca24aa9110..918fe44e371 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py @@ -54,7 +54,7 @@ def setSpecialOption(optVal): @DIRACScript() -def main(): +def main(self): global overwrite global specialOptions global module @@ -63,17 +63,17 @@ def main(): from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller gComponentInstaller.exitOnError = True - 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.parseCommandLine() - args = Script.getPositionalArgs() + self.registerSwitch("w", "overwrite", "Overwrite the configuration in the global CS", setOverwrite) + self.registerSwitch("m:", "module=", "Python module name for the component code", setModule) + self.registerSwitch("p:", "parameter=", "Special component option ", setSpecialOption) + self.parseCommandLine() + args = self.getPositionalArgs() if len(args) == 1: args = args[0].split('/') if len(args) != 2: - Script.showHelp() + self.showHelp() DIRACexit(1) system = args[0] diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_monitoring_get_components_status.py b/src/DIRAC/FrameworkSystem/scripts/dirac_monitoring_get_components_status.py index b6abd7288bd..58644e8525c 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_monitoring_get_components_status.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_monitoring_get_components_status.py @@ -11,9 +11,9 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() fieldsToShow = ('ComponentName', 'Type', 'Host', 'Port', 'Status', 'Message') diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_myproxy_upload.py b/src/DIRAC/FrameworkSystem/scripts/dirac_myproxy_upload.py index 0e7882a69ea..8dd0e60bd97 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_myproxy_upload.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_myproxy_upload.py @@ -35,15 +35,15 @@ def showVersion(self, arg): @DIRACScript() -def main(): +def main(self): params = Params() - Script.registerSwitch("f:", "file=", "File to use as proxy", params.setProxyLocation) - Script.registerSwitch("D", "DN", "Use DN as myproxy username", params.setDNAsUsername) - Script.registerSwitch("i", "version", "Print version", params.showVersion) + self.registerSwitch("f:", "file=", "File to use as proxy", params.setProxyLocation) + self.registerSwitch("D", "DN", "Use DN as myproxy username", params.setDNAsUsername) + self.registerSwitch("i", "version", "Print version", params.showVersion) - Script.addDefaultOptionValue("LogLevel", "always") - Script.parseCommandLine() + self.addDefaultOptionValue("LogLevel", "always") + self.parseCommandLine() from DIRAC.Core.Security.MyProxy import MyProxy from DIRAC.Core.Security import Locations diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py b/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py index f64b0b202d3..77935dd75e5 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py @@ -39,14 +39,14 @@ def setExcludedHosts(value): @DIRACScript() -def main(): +def main(self): global excludedHosts - Script.registerSwitch( + self.registerSwitch( "e:", "exclude=", "Comma separated list of hosts to be excluded from the scanning process", setExcludedHosts) - Script.parseCommandLine(ignoreErrors=False) + self.parseCommandLine(ignoreErrors=False) componentType = '' diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py index 54e1710b354..3623836dd1f 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py @@ -35,6 +35,10 @@ def __init__(self): """ self.vos = [] self.delete_all = False + self.switches = [ + ("a", "all", "Delete the local and all uploaded proxies (the nuclear option)", self.setDeleteAll), + ("v:", "vo=", "Delete uploaded proxy for vo name given", self.addVO) + ] def addVO(self, voname): """ @@ -56,18 +60,6 @@ def needsValidProxy(self): """ return self.vos or self.delete_all - # note the magic : and = - def registerCLISwitches(self): - """ - add options to dirac option parser - """ - Script.registerSwitch( - "a", - "all", - "Delete the local and all uploaded proxies (the nuclear option)", - self.setDeleteAll) - Script.registerSwitch("v:", "vo=", "Delete uploaded proxy for vo name given", self.addVO) - def getProxyGroups(): """ @@ -127,14 +119,14 @@ def deleteLocalProxy(proxyLoc): gLogger.notice('Local proxy deleted.') -def run(): +def run(self): """ main program entry point """ options = Params() - options.registerCLISwitches() + self.registerSwitches(options.switches) - Script.parseCommandLine(ignoreErrors=True) + self.parseCommandLine(ignoreErrors=True) if options.delete_all and options.vos: gLogger.error("-a and -v options are mutually exclusive. Please pick one or the other.") @@ -182,9 +174,9 @@ def run(): @DIRACScript() -def main(): +def main(self): try: - retval = run() + retval = run(self) DIRAC.exit(retval) except RuntimeError as rtError: gLogger.error('Operation failed: %s' % str(rtError)) 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 e035b4574ee..d550454fd08 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_get_uploaded_info.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_get_uploaded_info.py @@ -47,10 +47,10 @@ def setUser(arg): @DIRACScript() -def main(): +def main(self): global userName - Script.registerSwitch("u:", "user=", "User to query (by default oneself)", setUser) - Script.parseCommandLine() + self.registerSwitch("u:", "user=", "User to query (by default oneself)", setUser) + self.parseCommandLine() result = getProxyInfo() if not result['OK']: diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py index 701f56cd4d6..a0cdabf8edd 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py @@ -76,21 +76,21 @@ def setManagerInfo(self, arg): @DIRACScript() -def main(): +def main(self): params = Params() - from DIRAC.Core.Base import Script - 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) - Script.registerSwitch("v", "checkvalid", "Return error if the proxy is invalid", params.validityCheck) - Script.registerSwitch("x", "nocs", "Disable CS", params.disableCS) - Script.registerSwitch("e", "steps", "Show steps info", params.showSteps) - Script.registerSwitch("j", "noclockcheck", "Disable checking if time is ok", params.disableClockCheck) - Script.registerSwitch("m", "uploadedinfo", "Show uploaded proxies info", params.setManagerInfo) + # from DIRAC.Core.Base import Script + self.registerSwitch("f:", "file=", "File to use as user key", params.setProxyLocation) + self.registerSwitch("i", "version", "Print version", params.showVersion) + self.registerSwitch("n", "novoms", "Disable VOMS", params.disableVOMS) + self.registerSwitch("v", "checkvalid", "Return error if the proxy is invalid", params.validityCheck) + self.registerSwitch("x", "nocs", "Disable CS", params.disableCS) + self.registerSwitch("e", "steps", "Show steps info", params.showSteps) + self.registerSwitch("j", "noclockcheck", "Disable checking if time is ok", params.disableClockCheck) + self.registerSwitch("m", "uploadedinfo", "Show uploaded proxies info", params.setManagerInfo) - Script.disableCS() - Script.parseCommandLine() + self.disableCS() + self.parseCommandLine() from DIRAC.Core.Utilities.NTP import getClockDeviation from DIRAC import gLogger @@ -101,7 +101,7 @@ def main(): from DIRAC.ConfigurationSystem.Client.Helpers import Registry if params.csEnabled: - retVal = Script.enableCS() + retVal = self.enableCS() if not retVal['OK']: print("Cannot contact CS to get user list") diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py index baa9bca4672..0d2f00df84e 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py @@ -34,12 +34,25 @@ __RCSID__ = "$Id$" - -class Params(ProxyGeneration.CLIParams): - - addVOMSExt = False - uploadProxy = True - uploadPilot = False +class Params(ProxyGeneration.CLIParams, ProxyUpload.CLIParams): + + def __init__(self): + ProxyUpload.CLIParams.__init__(self) + ProxyGeneration.CLIParams.__init__(self) + self.addVOMSExt = False + self.uploadProxy = True + self.uploadPilot = False + self.switches = [ + ("U", "upload", + "Upload a long lived proxy to the ProxyManager (deprecated, see --no-upload)"), + ("N", "no-upload", + "Do not upload a long lived proxy to the ProxyManager", self.disableProxyUpload), + ("M", "VOMS", "Add voms extension", self.setVOMSExt) + ] + self.switches += self.proxyGenerationSwitches + for upSwitch in self.proxyUploadSwitches: + if upSwitch[0] not in [u[0] for u in self.switches]: + self.switches.append(upSwitch) def setVOMSExt(self, _arg): self.addVOMSExt = True @@ -49,23 +62,11 @@ def disableProxyUpload(self, _arg): self.uploadProxy = False return S_OK() - def registerCLISwitches(self): - ProxyGeneration.CLIParams.registerCLISwitches(self) - Script.registerSwitch( - "U", - "upload", - "Upload a long lived proxy to the ProxyManager (deprecated, see --no-upload)") - Script.registerSwitch( - "N", - "no-upload", - "Do not upload a long lived proxy to the ProxyManager", - self.disableProxyUpload) - Script.registerSwitch("M", "VOMS", "Add voms extension", self.setVOMSExt) - class ProxyInit(object): - def __init__(self, piParams): + def __init__(self, piParams, script): + self.__script = script self.__piParams = piParams self.__issuerCert = False self.__proxyGenerated = False @@ -128,7 +129,7 @@ def createProxy(self): """ Creates the proxy on disk """ gLogger.notice("Generating proxy...") - resultProxyGenerated = ProxyGeneration.generateProxy(piParams) + resultProxyGenerated = ProxyGeneration.generateProxy(self.__piParams, self.__script) if not resultProxyGenerated['OK']: gLogger.error(resultProxyGenerated['Message']) sys.exit(1) @@ -151,14 +152,12 @@ def uploadProxy(self): if issuerCert.getNotAfterDate()['Value'] - datetime.timedelta(minutes=10) < expiry: # pylint: disable=no-member gLogger.info('Proxy with DN "%s" already uploaded' % userDN) return S_OK() + gLogger.info("Uploading %s proxy to ProxyManager..." % userDN) - upParams = ProxyUpload.CLIParams() - upParams.onTheFly = True - upParams.proxyLifeTime = issuerCert.getRemainingSecs()['Value'] - 300 # pylint: disable=no-member - upParams.rfcIfPossible = self.__piParams.rfc - for k in ('certLoc', 'keyLoc', 'userPasswd'): - setattr(upParams, k, getattr(self.__piParams, k)) - resultProxyUpload = ProxyUpload.uploadProxy(upParams) + self.__piParams.onTheFly = True + self.__piParams.proxyLifeTime = issuerCert.getRemainingSecs()['Value'] - 300 # pylint: disable=no-member + self.__piParams.rfcIfPossible = self.__piParams.rfc + resultProxyUpload = ProxyUpload.uploadProxy(self.__piParams) if not resultProxyUpload['OK']: gLogger.error(resultProxyUpload['Message']) return resultProxyUpload @@ -228,8 +227,8 @@ def doTheMagic(self): return proxy self.checkCAs() - pI.certLifeTimeCheck() - resultProxyWithVOMS = pI.addVOMSExtIfNeeded() + self.certLifeTimeCheck() + resultProxyWithVOMS = self.addVOMSExtIfNeeded() if not resultProxyWithVOMS['OK']: if "returning a valid AC for the user" in resultProxyWithVOMS['Message']: gLogger.error(resultProxyWithVOMS['Message']) @@ -242,7 +241,7 @@ def doTheMagic(self): return resultProxyWithVOMS if self.__piParams.uploadProxy: - resultProxyUpload = pI.uploadProxy() + resultProxyUpload = self.uploadProxy() if not resultProxyUpload['OK']: if self.__piParams.strict: return resultProxyUpload @@ -251,16 +250,15 @@ def doTheMagic(self): @DIRACScript() -def main(): - global piParams, pI +def main(self): piParams = Params() - piParams.registerCLISwitches() + self.registerSwitches(piParams.switches) + self.disableCS() + self.parseCommandLine(ignoreErrors=True) - Script.disableCS() - Script.parseCommandLine(ignoreErrors=True) DIRAC.gConfig.setOptionValue("/DIRAC/Security/UseServerCertificate", "False") - pI = ProxyInit(piParams) + pI = ProxyInit(piParams, self) resultDoTheMagic = pI.doTheMagic() if not resultDoTheMagic['OK']: gLogger.fatal(resultDoTheMagic['Message']) diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py index 9915124ecc3..bf5efd8740c 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py @@ -20,12 +20,12 @@ @DIRACScript() -def main(): - Script.disableCS() - Script.parseCommandLine() - args = Script.getPositionalArgs() +def main(self): + self.disableCS() + self.parseCommandLine() + args = self.getPositionalArgs() if len(args) > 2: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) system = '*' component = '*' diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py index 210d2c6d51b..a5abd7e0b40 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py @@ -20,12 +20,12 @@ @DIRACScript() -def main(): - Script.disableCS() - Script.parseCommandLine() - args = Script.getPositionalArgs() +def main(self): + self.disableCS() + self.parseCommandLine() + args = self.getPositionalArgs() if len(args) > 2: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) system = '*' component = '*' diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py index df3c04da6f9..b2999102110 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py @@ -25,17 +25,17 @@ @DIRACScript() -def main(): - Script.disableCS() - Script.parseCommandLine() - args = Script.getPositionalArgs() +def main(self): + self.disableCS() + self.parseCommandLine() + args = self.getPositionalArgs() from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller __RCSID__ = "$Id$" if len(args) > 2: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) system = '*' component = '*' diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py index 059053a71b1..da7e464a823 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py @@ -18,17 +18,17 @@ @DIRACScript() -def main(): - Script.disableCS() - Script.parseCommandLine() - args = Script.getPositionalArgs() +def main(self): + self.disableCS() + self.parseCommandLine() + args = self.getPositionalArgs() from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller __RCSID__ = "$Id$" if len(args) > 2: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) system = '*' component = '*' diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py b/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py index ec12bdc5322..8a3d1e4e9d4 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py @@ -36,9 +36,9 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() arg = "".join(args) diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py index 58da55a64c5..78f26949cbd 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py @@ -35,21 +35,21 @@ def setForce(opVal): @DIRACScript() -def main(): +def main(self): global force from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller gComponentInstaller.exitOnError = True - Script.registerSwitch("f", "force", "Forces the removal of the logs", setForce) - Script.parseCommandLine() - args = Script.getPositionalArgs() + self.registerSwitch("f", "force", "Forces the removal of the logs", setForce) + self.parseCommandLine() + args = self.getPositionalArgs() if len(args) == 1: args = args[0].split('/') if len(args) < 2: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) system = args[0] component = args[1] diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py index e688b6d072b..b051be18fc1 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py @@ -31,14 +31,14 @@ def setGroupName(arg): global groupName if groupName or not arg: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) groupName = arg def addUserName(arg): global userNames if not arg: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) if arg not in userNames: userNames.append(arg) @@ -46,34 +46,34 @@ def addUserName(arg): def addProperty(arg): global groupProperties if not arg: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) if arg not in groupProperties: groupProperties.append(arg) @DIRACScript() -def main(): +def main(self): global groupName global groupProperties global userNames - Script.registerSwitch('G:', 'GroupName:', 'Name of the Group (Mandatory)', setGroupName) - Script.registerSwitch( + self.registerSwitch('G:', 'GroupName:', 'Name of the Group (Mandatory)', setGroupName) + self.registerSwitch( 'U:', 'UserName:', 'Short Name of user to be added to the Group (Allow Multiple instances or None)', addUserName) - Script.registerSwitch( + self.registerSwitch( 'P:', 'Property:', 'Property to be added to the Group (Allow Multiple instances or None)', addProperty) - Script.parseCommandLine(ignoreErrors=True) + self.parseCommandLine(ignoreErrors=True) if groupName is None: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) - args = Script.getPositionalArgs() + args = self.getPositionalArgs() from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() @@ -94,7 +94,7 @@ def main(): else: pName = pl[0] pValue = "=".join(pl[1:]) - Script.gLogger.info("Setting property %s to %s" % (pName, pValue)) + self.gLogger.info("Setting property %s to %s" % (pName, pValue)) groupProps[pName] = pValue if not diracAdmin.csModifyGroup(groupName, groupProps, createIfNonExistant=True)['OK']: @@ -107,7 +107,7 @@ def main(): exitCode = 255 for error in errorList: - Script.gLogger.error("%s: %s" % error) + self.gLogger.error("%s: %s" % error) DIRAC.exit(exitCode) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py index 02557c48804..09baf44921f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py @@ -29,44 +29,44 @@ def setHostName(arg): global hostName if hostName or not arg: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) hostName = arg def setHostDN(arg): global hostDN if hostDN or not arg: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) hostDN = arg def addProperty(arg): global hostProperties if not arg: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) if arg not in hostProperties: hostProperties.append(arg) @DIRACScript() -def main(): +def main(self): global hostName global hostDN global hostProperties - Script.registerSwitch('H:', 'HostName:', 'Name of the Host (Mandatory)', setHostName) - Script.registerSwitch('D:', 'HostDN:', 'DN of the Host Certificate (Mandatory)', setHostDN) - Script.registerSwitch( + self.registerSwitch('H:', 'HostName:', 'Name of the Host (Mandatory)', setHostName) + self.registerSwitch('D:', 'HostDN:', 'DN of the Host Certificate (Mandatory)', setHostDN) + self.registerSwitch( 'P:', 'Property:', 'Property to be added to the Host (Allow Multiple instances or None)', addProperty) - Script.parseCommandLine(ignoreErrors=True) + self.parseCommandLine(ignoreErrors=True) if hostName is None or hostDN is None: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) - args = Script.getPositionalArgs() + args = self.getPositionalArgs() from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() @@ -85,7 +85,7 @@ def main(): else: pName = pl[0] pValue = "=".join(pl[1:]) - Script.gLogger.info("Setting property %s to %s" % (pName, pValue)) + self.gLogger.info("Setting property %s to %s" % (pName, pValue)) hostProps[pName] = pValue if not diracAdmin.csModifyHost(hostName, hostProps, createIfNonExistant=True)['OK']: @@ -102,16 +102,16 @@ def main(): cmc = ComponentMonitoringClient() ret = cmc.hostExists(dict(HostName=hostName)) if not ret['OK']: - Script.gLogger.error('Cannot check if host is registered in ComponentMonitoring', ret['Message']) + self.gLogger.error('Cannot check if host is registered in ComponentMonitoring', ret['Message']) elif ret['Value']: - Script.gLogger.info('Host already registered in ComponentMonitoring') + self.gLogger.info('Host already registered in ComponentMonitoring') else: ret = cmc.addHost(dict(HostName=hostName, CPU='TO_COME')) if not ret['OK']: - Script.gLogger.error('Failed to add Host to ComponentMonitoring', ret['Message']) + self.gLogger.error('Failed to add Host to ComponentMonitoring', ret['Message']) for error in errorList: - Script.gLogger.error("%s: %s" % error) + self.gLogger.error("%s: %s" % error) DIRAC.exit(exitCode) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py index 150763646cc..6b6f6adb411 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py @@ -30,23 +30,23 @@ def setUserName(arg): global userName if userName or not arg: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) userName = arg def setUserDN(arg): global userDN if userDN or not arg: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) userDN = arg def setUserMail(arg): global userMail if userMail or not arg: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) if not arg.find('@') > 0: - Script.gLogger.error('Not a valid mail address', arg) + self.gLogger.error('Not a valid mail address', arg) DIRAC.exit(-1) userMail = arg @@ -54,32 +54,32 @@ def setUserMail(arg): def addUserGroup(arg): global userGroups if not arg: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) if arg not in userGroups: userGroups.append(arg) @DIRACScript() -def main(): +def main(self): global userName global userDN global userMail global userGroups - 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) - Script.registerSwitch( + self.registerSwitch('N:', 'UserName:', 'Short Name of the User (Mandatory)', setUserName) + self.registerSwitch('D:', 'UserDN:', 'DN of the User Certificate (Mandatory)', setUserDN) + self.registerSwitch('M:', 'UserMail:', 'eMail of the user (Mandatory)', setUserMail) + self.registerSwitch( 'G:', 'UserGroup:', 'Name of the Group for the User (Allow Multiple instances or None)', addUserGroup) - Script.parseCommandLine(ignoreErrors=True) + self.parseCommandLine(ignoreErrors=True) if userName is None or userDN is None or userMail is None: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) - args = Script.getPositionalArgs() + args = self.getPositionalArgs() from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() @@ -97,7 +97,7 @@ def main(): else: pName = pl[0] pValue = "=".join(pl[1:]) - Script.gLogger.info("Setting property %s to %s" % (pName, pValue)) + self.gLogger.info("Setting property %s to %s" % (pName, pValue)) userProps[pName] = pValue if not diracAdmin.csModifyUser(userName, userProps, createIfNonExistant=True)['OK']: @@ -110,7 +110,7 @@ def main(): exitCode = 255 for error in errorList: - Script.gLogger.error("%s: %s" % error) + self.gLogger.error("%s: %s" % error) DIRAC.exit(exitCode) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py b/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py index 4b5b07fa195..800ef33d89f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py @@ -29,9 +29,9 @@ @DIRACScript() -def main(): - Script.registerSwitch("E:", "email=", "Boolean True/False (True by default)") - Script.parseCommandLine(ignoreErrors=True) +def main(self): + self.registerSwitch("E:", "email=", "Boolean True/False (True by default)") + self.parseCommandLine(ignoreErrors=True) from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations @@ -43,17 +43,17 @@ def getBoolean(value): elif value.lower() == 'false': return False else: - Script.showHelp() + self.showHelp() email = True - for switch in Script.getUnprocessedSwitches(): + for switch in self.getUnprocessedSwitches(): if switch[0] == "email": email = getBoolean(switch[1]) - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 2: - Script.showHelp() + self.showHelp() diracAdmin = DiracAdmin() exitCode = 0 diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py b/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py index 7d905f84a2d..3ffdbf3d922 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py @@ -29,9 +29,9 @@ @DIRACScript() -def main(): - Script.registerSwitch("E:", "email=", "Boolean True/False (True by default)") - Script.parseCommandLine(ignoreErrors=True) +def main(self): + self.registerSwitch("E:", "email=", "Boolean True/False (True by default)") + self.parseCommandLine(ignoreErrors=True) from DIRAC import exit as DIRACExit, gConfig, gLogger from DIRAC.Core.Utilities.PromptUser import promptUser @@ -44,17 +44,17 @@ def getBoolean(value): elif value.lower() == 'false': return False else: - Script.showHelp() + self.showHelp() email = True - for switch in Script.getUnprocessedSwitches(): + for switch in self.getUnprocessedSwitches(): if switch[0] == "email": email = getBoolean(switch[1]) - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 2: - Script.showHelp() + self.showHelp() diracAdmin = DiracAdmin() exitCode = 0 diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py b/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py index 02b689f61ab..fa811fd3730 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py @@ -27,15 +27,15 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() from DIRAC.ConfigurationSystem.Client.Helpers import cfgPath from DIRAC.ConfigurationSystem.Client.Helpers.Resources import getCESiteMapping if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) res = getCESiteMapping(args[0]) if not res['OK']: diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py b/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py index 00d458d567e..cf60506b65c 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py @@ -28,9 +28,9 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() from DIRAC import exit as DIRACExit from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin @@ -39,7 +39,7 @@ def main(): errorList = [] if len(args) < 1: - Script.showHelp() + self.showHelp() choice = six.moves.input("Are you sure you want to delete user/s %s? yes/no [no]: " % ", ".join(args)) choice = choice.lower() 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 c98ceee2708..c06cd0943b9 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_banned_sites.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_banned_sites.py @@ -22,8 +22,8 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) +def main(self): + self.parseCommandLine(ignoreErrors=True) from DIRAC import gLogger, exit as DIRACExit from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin 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 25378c6f547..90ac08289f0 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 @@ -26,12 +26,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp() + self.showHelp() from DIRAC import exit as DIRACExit from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin 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 d795b5880c8..8a2db197992 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_job_pilots.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_job_pilots.py @@ -45,12 +45,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp() + self.showHelp() from DIRAC import exit as DIRACExit from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin 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 14ca628bd9c..81aab94c005 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_info.py @@ -51,19 +51,19 @@ def setExtendedPrint(_arg): @DIRACScript() -def main(): +def main(self): global extendedPrint - Script.registerSwitch('e', 'extended', 'Get extended printout', setExtendedPrint) - Script.parseCommandLine(ignoreErrors=True) + self.registerSwitch('e', 'extended', 'Get extended printout', setExtendedPrint) + self.parseCommandLine(ignoreErrors=True) from DIRAC import exit as DIRACExit from DIRAC.Interfaces.API.Dirac import Dirac from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp() + self.showHelp() diracAdmin = DiracAdmin() dirac = Dirac() 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 1c373499cf7..30cc355cb27 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 @@ -43,12 +43,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp() + self.showHelp() from DIRAC import exit as DIRACExit from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin 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 d0acbbe2840..40efb3bfb78 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_output.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_output.py @@ -28,12 +28,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp() + self.showHelp() from DIRAC import exit as DIRACExit from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin 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 9827aef300c..4bb52bc31ea 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_site_mask.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_site_mask.py @@ -29,8 +29,8 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) +def main(self): + self.parseCommandLine(ignoreErrors=True) from DIRAC import exit as DIRACExit, gLogger from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py b/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py index 13625e47c4c..035390c4c88 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py @@ -23,11 +23,11 @@ @DIRACScript() -def main(): - Script.registerSwitch("e", "extended", "Show extended info") +def main(self): + self.registerSwitch("e", "extended", "Show extended info") - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() from DIRAC import exit as DIRACExit from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin @@ -36,7 +36,7 @@ def main(): errorList = [] extendedInfo = False - for unprocSw in Script.getUnprocessedSwitches(): + for unprocSw in self.getUnprocessedSwitches(): if unprocSw[0] in ('e', 'extended'): extendedInfo = True diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py b/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py index f8fef046db6..32063c71c47 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py @@ -30,10 +30,10 @@ @DIRACScript() -def main(): - Script.registerSwitch("e", "extended", "Show extended info") - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.registerSwitch("e", "extended", "Show extended info") + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) == 0: args = ['all'] @@ -45,7 +45,7 @@ def main(): errorList = [] extendedInfo = False - for unprocSw in Script.getUnprocessedSwitches(): + for unprocSw in self.getUnprocessedSwitches(): if unprocSw[0] in ('e', 'extended'): extendedInfo = True diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py b/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py index a0bf48c0bc1..724349ac510 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py @@ -29,15 +29,15 @@ @DIRACScript() -def main(): - Script.registerSwitch("p:", "property=", "Add property to the user =") - Script.registerSwitch("f", "force", "create the user if it doesn't exist") - Script.parseCommandLine(ignoreErrors=True) +def main(self): + self.registerSwitch("p:", "property=", "Add property to the user =") + self.registerSwitch("f", "force", "create the user if it doesn't exist") + self.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 3: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() @@ -46,7 +46,7 @@ def main(): errorList = [] userProps = {} - for unprocSw in Script.getUnprocessedSwitches(): + for unprocSw in self.getUnprocessedSwitches(): if unprocSw[0] in ("f", "force"): forceCreation = True elif unprocSw[0] in ("p", "property"): diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py b/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py index e122ea32ba3..171e9b4b7a0 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py @@ -38,9 +38,9 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py b/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py index 9153bf473be..0b7a1bf55d1 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py @@ -28,13 +28,13 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) +def main(self): + self.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp() + self.showHelp() from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py b/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py index c6d9bd30c66..7b1dc95d7f5 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py @@ -35,9 +35,9 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() setup = '' if args: 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 b48ebd359c6..a8516eb518e 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_set_site_protocols.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_set_site_protocols.py @@ -27,19 +27,19 @@ @DIRACScript() -def main(): - Script.registerSwitch("", "Site=", "Site for which protocols are to be set (mandatory)") - Script.parseCommandLine(ignoreErrors=True) +def main(self): + self.registerSwitch("", "Site=", "Site for which protocols are to be set (mandatory)") + self.parseCommandLine(ignoreErrors=True) site = None - for switch in Script.getUnprocessedSwitches(): + for switch in self.getUnprocessedSwitches(): if switch[0].lower() == "site": site = switch[1] - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if not site or not args: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py b/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py index d1e914787c5..9fd0d51aefa 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py @@ -33,12 +33,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp() + self.showHelp() from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() 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 c3923b3b5cf..4419dd203bf 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_site_mask_logging.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_site_mask_logging.py @@ -29,12 +29,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp() + self.showHelp() from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() 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 63b3dd995ab..801fa3fed80 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 @@ -28,14 +28,14 @@ @DIRACScript() -def main(): - Script.registerSwitch("t", "test", "Only test. Don't commit changes") - Script.parseCommandLine(ignoreErrors=True) +def main(self): + self.registerSwitch("t", "test", "Only test. Don't commit changes") + self.parseCommandLine(ignoreErrors=True) - args = Script.getExtraCLICFGFiles() + args = self.getExtraCLICFGFiles() if len(args) < 1: - Script.showHelp() + self.showHelp() from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() @@ -43,7 +43,7 @@ def main(): testOnly = False errorList = [] - for unprocSw in Script.getUnprocessedSwitches(): + for unprocSw in self.getUnprocessedSwitches(): if unprocSw[0] in ("t", "test"): testOnly = True diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py b/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py index 658698562c7..b91a0deda29 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py @@ -29,12 +29,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - lfns = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + lfns = self.getPositionalArgs() if len(lfns) < 1: - Script.showHelp() + self.showHelp() from DIRAC.Interfaces.API.Dirac import Dirac dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py index b4eec0e53a1..b46ac3a1232 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py @@ -32,15 +32,15 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() # pylint: disable=wrong-import-position from DIRAC.Interfaces.API.Dirac import Dirac if len(args) < 2: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) if len(args) > 3: print('Only one LFN SE pair will be considered') diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py index 4d9ec9259a6..2ea429b8ad2 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py @@ -41,12 +41,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - lfns = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + lfns = self.getPositionalArgs() if len(lfns) < 1: - Script.showHelp() + self.showHelp() from DIRAC.Interfaces.API.Dirac import Dirac dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py index ab361d0fb8e..1867b97c350 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py @@ -30,11 +30,11 @@ @DIRACScript() -def main(): - Script.registerSwitch('a', "All", " Also show inactive replicas") - Script.parseCommandLine(ignoreErrors=True) - lfns = Script.getPositionalArgs() - switches = Script.getUnprocessedSwitches() +def main(self): + self.registerSwitch('a', "All", " Also show inactive replicas") + self.parseCommandLine(ignoreErrors=True) + lfns = self.getPositionalArgs() + switches = self.getUnprocessedSwitches() active = True for switch in switches: @@ -42,7 +42,7 @@ def main(): if opt in ("a", "all"): active = False if len(lfns) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) from DIRAC.Interfaces.API.Dirac import Dirac dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py index 012a12caa24..23a8e9ce9b6 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py @@ -25,12 +25,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 2: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) if len(args) > 2: print('Only one PFN SE pair will be considered') diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py index 6a66a7cdb89..c880771152f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py @@ -25,12 +25,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 2: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) if len(args) > 2: print('Only one PFN SE pair will be considered') diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py b/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py index 97e99e0907e..3d8c2e6adff 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py @@ -33,12 +33,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 2 or len(args) > 4: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) lfn = args[0] seName = args[1] diff --git a/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py b/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py index dfdf54f5749..11ff19a414f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py +++ b/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py @@ -50,9 +50,9 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() system = None service = None url = None @@ -64,14 +64,14 @@ def main(): else: sys_serv = args[0].split('/') if len(sys_serv) != 2: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) else: system, service = sys_serv elif len(args) == 2: system, service = args[0], args[1] else: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) from DIRAC.Interfaces.API.Dirac import Dirac dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py b/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py index ea0ee9c8603..30a1551b990 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py +++ b/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py @@ -19,7 +19,7 @@ @DIRACScript() -def main(): +def main(self): with open(os.devnull, 'w') as redirectStdout, open(os.devnull, 'w') as redirectStderr: from DIRAC import gLogger from DIRAC.ConfigurationSystem.Client.ConfigurationData import gConfigurationData diff --git a/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py b/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py index 67d26767bfb..beb604ffaf8 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py +++ b/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py @@ -20,12 +20,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=False) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=False) + args = self.getPositionalArgs() if len(args) != 1: - Script.showHelp() + self.showHelp() repoLocation = args[0] from DIRAC.Interfaces.API.Dirac import Dirac diff --git a/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py b/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py index c89e80dec2e..5f894b7fc9d 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py +++ b/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py @@ -26,11 +26,11 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=False) - files = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=False) + files = self.getPositionalArgs() if len(files) == 0: - Script.showHelp() + self.showHelp() exitCode = 0 diff --git a/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py b/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py index 36785a6061b..52646e8f5fc 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py +++ b/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py @@ -27,11 +27,11 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=False) - files = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=False) + files = self.getPositionalArgs() if len(files) == 0: - Script.showHelp() + self.showHelp() exitCode = 0 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 bbca4d98016..5fe130b6f3e 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 @@ -32,12 +32,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp() + self.showHelp() exitCode = 0 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 1fb3654c447..ceebc372813 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_get_queue_normalization.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_get_queue_normalization.py @@ -27,12 +27,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp() + self.showHelp() exitCode = 0 diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py index 6f7f5247c98..4147d13653f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py @@ -61,12 +61,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp() + self.showHelp() from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py index eaecd5fc11d..de4b19dfa51 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py @@ -29,12 +29,12 @@ @DIRACScript() -def main(): - 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") +def main(self): + self.registerSwitch("f:", "File=", "Get output for jobs with IDs from the file") + self.registerSwitch("g:", "JobGroup=", "Get output for jobs in the given group") - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() import DIRAC from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments @@ -42,7 +42,7 @@ def main(): dirac = Dirac() jobs = [] - for sw, value in Script.getUnprocessedSwitches(): + for sw, value in self.getUnprocessedSwitches(): if sw.lower() in ('f', 'file'): if os.path.exists(value): jFile = open(value) @@ -64,7 +64,7 @@ def main(): if not jobs: print("Warning: no jobs selected") - Script.showHelp() + self.showHelp() DIRAC.exit(0) result = dirac.deleteJob(jobs) 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 a397dd18f0e..48c4210a476 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_input.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_input.py @@ -30,13 +30,13 @@ @DIRACScript() -def main(): - Script.registerSwitch("D:", "Dir=", "Store the output in this directory") - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.registerSwitch("D:", "Dir=", "Store the output in this directory") + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments dirac = Dirac() @@ -44,7 +44,7 @@ def main(): errorList = [] outputDir = None - for sw, v in Script.getUnprocessedSwitches(): + for sw, v in self.getUnprocessedSwitches(): if sw in ('D', 'Dir'): outputDir = v 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 2eaf412d95f..3f9eb59f4eb 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_jdl.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_jdl.py @@ -44,22 +44,22 @@ @DIRACScript() -def main(): +def main(self): original = False - Script.registerSwitch('O', 'Original', 'Gets the original JDL') - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + self.registerSwitch('O', 'Original', 'Gets the original JDL') + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() - for switch in Script.getUnprocessedSwitches(): + for switch in self.getUnprocessedSwitches(): if switch[0] == 'Original' or switch[0] == 'O': original = True - for switch in Script.getUnprocessedSwitches(): + for switch in self.getUnprocessedSwitches(): if switch[0] == 'Original': original = True if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments dirac = Dirac() 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 eb089ab682f..d40bd4131bd 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output.py @@ -31,13 +31,13 @@ @DIRACScript() -def main(): - 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") +def main(self): + self.registerSwitch("D:", "Dir=", "Store the output in this directory") + self.registerSwitch("f:", "File=", "Get output for jobs with IDs from the file") + self.registerSwitch("g:", "JobGroup=", "Get output for jobs in the given group") - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments from DIRAC.Core.Utilities.Time import toString, date, day @@ -50,7 +50,7 @@ def main(): outputDir = None group = None jobs = [] - for sw, value in Script.getUnprocessedSwitches(): + for sw, value in self.getUnprocessedSwitches(): if sw in ('D', 'Dir'): outputDir = value elif sw.lower() in ('f', 'file'): 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 3535feae921..bbcd72d2e63 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 @@ -24,13 +24,13 @@ @DIRACScript() -def main(): - Script.registerSwitch("D:", "Dir=", "Store the output in this directory") - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.registerSwitch("D:", "Dir=", "Store the output in this directory") + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments dirac = Dirac() @@ -38,7 +38,7 @@ def main(): errorList = [] outputDir = '' - for sw, v in Script.getUnprocessedSwitches(): + for sw, v in self.getUnprocessedSwitches(): if sw in ('D', 'Dir'): outputDir = v diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py index e18bbf15911..d15daac932f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py @@ -40,12 +40,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments 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 9b3d40647ac..de154b294ec 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_logging_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_logging_info.py @@ -42,12 +42,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py index 79c81d3369c..5421c05e11a 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py @@ -52,12 +52,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py index 8844a8ba45b..9baaa9e8171 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py @@ -27,12 +27,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py index a77b04ab16b..02e757f70ae 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py @@ -28,12 +28,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py index 043eb835802..2a9e8d6447b 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py @@ -28,12 +28,12 @@ @DIRACScript() -def main(): - 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") +def main(self): + self.registerSwitch("f:", "File=", "Get status for jobs with IDs from the file") + self.registerSwitch("g:", "JobGroup=", "Get status for jobs in the given group") - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() from DIRAC import exit as DIRACExit from DIRAC.Core.Utilities.Time import toString, date, day @@ -43,7 +43,7 @@ def main(): exitCode = 0 jobs = [] - for key, value in Script.getUnprocessedSwitches(): + for key, value in self.getUnprocessedSwitches(): if key.lower() in ('f', 'file'): if os.path.exists(value): jFile = open(value) @@ -59,7 +59,7 @@ def main(): jobs += result['Value'] if len(args) < 1 and not jobs: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) if len(args) > 0: jobs += parseArguments(args) diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py index 631bf600086..c798c5ed4df 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py @@ -30,17 +30,17 @@ @DIRACScript() -def main(): - Script.registerSwitch("f:", "File=", "Writes job ids to file ") - Script.registerSwitch("r:", "UseJobRepo=", "Use the job repository") - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.registerSwitch("f:", "File=", "Writes job ids to file ") + self.registerSwitch("r:", "UseJobRepo=", "Use the job repository") + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp() + self.showHelp() from DIRAC.Interfaces.API.Dirac import Dirac - unprocessed_switches = Script.getUnprocessedSwitches() + unprocessed_switches = self.getUnprocessedSwitches() use_repo = False repo_name = "" for sw, value in unprocessed_switches: 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 3cba594b9de..0b641c960b9 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 @@ -27,17 +27,17 @@ @DIRACScript() -def main(): - Script.registerSwitch("", "Status=", "Primary status") - Script.registerSwitch("", "MinorStatus=", "Secondary status") - Script.registerSwitch("", "ApplicationStatus=", "Application status") - Script.registerSwitch("", "Site=", "Execution site") - Script.registerSwitch("", "Owner=", "Owner (DIRAC nickname)") - 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.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.registerSwitch("", "Status=", "Primary status") + self.registerSwitch("", "MinorStatus=", "Secondary status") + self.registerSwitch("", "ApplicationStatus=", "Application status") + self.registerSwitch("", "Site=", "Execution site") + self.registerSwitch("", "Owner=", "Owner (DIRAC nickname)") + self.registerSwitch("", "JobGroup=", "Select jobs for specified job group") + self.registerSwitch("", "Date=", "Date in YYYY-MM-DD format, if not specified default is today") + self.registerSwitch("", "File=", "File name,if not specified default is std.out ") + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() # Default values status = None @@ -50,11 +50,11 @@ def main(): filename = 'std.out' if len(args) != 1: - Script.showHelp() + self.showHelp() searchstring = str(args[0]) - for switch in Script.getUnprocessedSwitches(): + for switch in self.getUnprocessedSwitches(): if switch[0].lower() == "status": status = switch[1] elif switch[0].lower() == "minorstatus": diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py b/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py index 81174f533e0..4e9e5accd2b 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py @@ -25,19 +25,19 @@ @DIRACScript() -def main(): +def main(self): maxJobs = 100 - Script.registerSwitch("", "Status=", "Primary status") - Script.registerSwitch("", "MinorStatus=", "Secondary status") - Script.registerSwitch("", "ApplicationStatus=", "Application status") - Script.registerSwitch("", "Site=", "Execution site") - Script.registerSwitch("", "Owner=", "Owner (DIRAC nickname)") - 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.parseCommandLine(ignoreErrors=True) - - args = Script.getPositionalArgs() + self.registerSwitch("", "Status=", "Primary status") + self.registerSwitch("", "MinorStatus=", "Secondary status") + self.registerSwitch("", "ApplicationStatus=", "Application status") + self.registerSwitch("", "Site=", "Execution site") + self.registerSwitch("", "Owner=", "Owner (DIRAC nickname)") + self.registerSwitch("", "JobGroup=", "Select jobs for specified job group") + self.registerSwitch("", "Date=", "Date in YYYY-MM-DD format, if not specified default is today") + self.registerSwitch("", "Maximum=", "Maximum number of jobs shown (default %d, 0 means all)" % maxJobs) + self.parseCommandLine(ignoreErrors=True) + + args = self.getPositionalArgs() # Default values status = None @@ -49,11 +49,11 @@ def main(): date = None if args: - Script.showHelp() + self.showHelp() exitCode = 0 - for switch in Script.getUnprocessedSwitches(): + for switch in self.getUnprocessedSwitches(): if switch[0].lower() == "status": status = switch[1] elif switch[0].lower() == "minorstatus": diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py index 8b02e2265b7..3d47b6975ba 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py @@ -23,8 +23,8 @@ @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient @@ -33,13 +33,13 @@ def main(): transClient = TransformationClient() # get arguments - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) == 3: parentTransID = args[2] elif len(args) == 2: parentTransID = '' else: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) prodID = args[0] transID = args[1] diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py index 4175185cfa1..e208c9f8e2d 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py @@ -20,14 +20,14 @@ @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) # get arguments prodID = args[0] diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py index 621fbc5403d..a7cdeb64c93 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py @@ -21,14 +21,14 @@ @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) # get arguments prodID = args[0] diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py index ceea5db3424..309089e4ce0 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py @@ -23,8 +23,8 @@ @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() from DIRAC.Core.Utilities.PrettyPrint import printTable from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient @@ -32,9 +32,9 @@ def main(): prodClient = ProductionClient() # get arguments - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) else: prodID = args[0] res = prodClient.getProduction(prodID) diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py index 9655679bc7d..f1c31dc32f6 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py @@ -18,8 +18,8 @@ @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.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 614058b51c7..e6a9b864fbc 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py @@ -23,17 +23,17 @@ @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient prodClient = ProductionClient() # get arguments - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) else: prodID = args[0] res = prodClient.getProduction(prodID) diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py index 035865552c9..cb8e2b48c69 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py @@ -24,15 +24,15 @@ @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) # get arguments prodID = args[0] diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py index a121ffa0570..3662f6e33ea 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py @@ -23,14 +23,14 @@ @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) # get arguments prodID = args[0] diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py index 78c5bfb3158..b3edc5b66e0 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py @@ -23,14 +23,14 @@ @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) # get arguments prodID = args[0] 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 a5a6e79c234..34d06343fdf 100755 --- a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_list_req_cache.py +++ b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_list_req_cache.py @@ -17,15 +17,15 @@ @DIRACScript() -def main(): - Script.registerSwitch('', 'Full', ' Print full list of requests') +def main(self): + self.registerSwitch('', 'Full', ' Print full list of requests') from DIRAC.Core.Base.Script import parseCommandLine parseCommandLine() from DIRAC.RequestManagementSystem.Client.ReqClient import ReqClient fullPrint = False - for switch in Script.getUnprocessedSwitches(): + for switch in self.getUnprocessedSwitches(): if switch[0] == 'Full': fullPrint = True diff --git a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py index 4d5d021db7f..fa4629501d2 100755 --- a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py +++ b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py @@ -16,7 +16,7 @@ @DIRACScript() -def main(): +def main(self): 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 8dcda50ef0d..66aefc0ee14 100755 --- a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py +++ b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py @@ -36,26 +36,26 @@ def convertDate(date): @DIRACScript() -def main(): +def main(self): from DIRAC.Core.Base import Script - Script.registerSwitch('', 'Job=', ' JobID[,jobID2,...]') - Script.registerSwitch('', 'Transformation=', ' transformation ID') - Script.registerSwitch('', 'Tasks=', ' Associated to --Transformation, list of taskIDs') - Script.registerSwitch('', 'Verbose', ' Print more information') - Script.registerSwitch('', 'Terse', ' Only print request status') - Script.registerSwitch('', 'Full', ' Print full request content') - Script.registerSwitch('', 'Status=', ' Select all requests in a given status') - Script.registerSwitch('', 'Since=', + self.registerSwitch('', 'Job=', ' JobID[,jobID2,...]') + self.registerSwitch('', 'Transformation=', ' transformation ID') + self.registerSwitch('', 'Tasks=', ' Associated to --Transformation, list of taskIDs') + self.registerSwitch('', 'Verbose', ' Print more information') + self.registerSwitch('', 'Terse', ' Only print request status') + self.registerSwitch('', 'Full', ' Print full request content') + self.registerSwitch('', 'Status=', ' Select all requests in a given status') + self.registerSwitch('', 'Since=', ' Associated to --Status, start date yyyy-mm-dd or nb of days (default= -one day') - Script.registerSwitch('', 'Until=', ' Associated to --Status, end date (default= now') - Script.registerSwitch('', 'Maximum=', ' Associated to --Status, max number of requests ') - Script.registerSwitch('', 'Reset', ' Reset Failed files to Waiting if any') - Script.registerSwitch('', 'Force', ' Force reset even if not Failed') - Script.registerSwitch('', 'All', ' (if --Status Failed) all requests, otherwise exclude irrecoverable failures') - Script.registerSwitch('', 'FixJob', ' Set job Done if the request is Done') - 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') + self.registerSwitch('', 'Until=', ' Associated to --Status, end date (default= now') + self.registerSwitch('', 'Maximum=', ' Associated to --Status, max number of requests ') + self.registerSwitch('', 'Reset', ' Reset Failed files to Waiting if any') + self.registerSwitch('', 'Force', ' Force reset even if not Failed') + self.registerSwitch('', 'All', ' (if --Status Failed) all requests, otherwise exclude irrecoverable failures') + self.registerSwitch('', 'FixJob', ' Set job Done if the request is Done') + self.registerSwitch('', 'Cancel', ' Cancel the request') + self.registerSwitch('', 'ListJobs', ' List the corresponding jobs') + self.registerSwitch('', 'TargetSE=', ' Select request only if that SE is in the targetSEs') from DIRAC.Core.Base.Script import parseCommandLine parseCommandLine() @@ -82,7 +82,7 @@ def main(): listJobs = False force = False targetSE = set() - for switch in Script.getUnprocessedSwitches(): + for switch in self.getUnprocessedSwitches(): if switch[0] == 'Job': jobs = [] job = "Unknown" @@ -158,7 +158,7 @@ def main(): if transID: if not taskIDs: gLogger.fatal("If Transformation is set, a list of Tasks should also be set") - Script.showHelp(exitCode=2) + self.showHelp(exitCode=2) # In principle, the task name is unique, so the request name should be unique as well # If ever this would not work anymore, we would need to use the transformationClient # to fetch the ExternalID @@ -168,7 +168,7 @@ def main(): elif not jobs: requests = [] # Get full list of arguments, with and without comma - for arg in [x.strip() for arg in Script.getPositionalArgs() for x in arg.split(',')]: + for arg in [x.strip() for arg in self.getPositionalArgs() for x in arg.split(',')]: if os.path.exists(arg): lines = open(arg, 'r').readlines() requests += [reqID.strip() for line in lines for reqID in line.split(',')] @@ -200,7 +200,7 @@ def main(): gLogger.notice('Obtained %d requests %s between %s and %s' % (len(requests), status, since, until)) if not requests: gLogger.notice('No request selected....') - Script.showHelp(exitCode=2) + self.showHelp(exitCode=2) okRequests = [] warningPrinted = False jobIDList = [] diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py index 0dad2aaee1f..5ce480cd723 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py @@ -26,7 +26,7 @@ switchDict = {} -def registerSwitches(): +def registerSwitches(self): """ Registers all switches that can be used while calling the script from the command line interface. @@ -43,32 +43,32 @@ def registerSwitches(): ) for switch in switches: - Script.registerSwitch('', switch[0], switch[1]) + self.registerSwitch('', switch[0], switch[1]) -def registerUsageMessage(): +def registerUsageMessage(self): """ Takes the script __doc__ and adds the DIRAC version to it """ usageMessage = ' DIRAC %s\n' % version usageMessage += __doc__ - Script.setUsageMessage(usageMessage) + self.setUsageMessage(usageMessage) -def parseSwitches(): +def parseSwitches(self): """ Parses the arguments passed by the user """ - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if args: subLogger.error("Found the following positional args '%s', but we only accept switches" % args) subLogger.error("Please, check documentation below") - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) - switches = dict(Script.getUnprocessedSwitches()) + switches = dict(self.getUnprocessedSwitches()) # Default values switches.setdefault('elementType', None) switches.setdefault('name', None) @@ -80,12 +80,12 @@ def parseSwitches(): if 'element' not in switches: subLogger.error("element Switch missing") subLogger.error("Please, check documentation below") - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) if not switches['element'] in ('Site', 'Resource', 'Node'): subLogger.error("Found %s as element switch" % switches['element']) subLogger.error("Please, check documentation below") - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) subLogger.debug("The switches used are:") map(subLogger.debug, switches.items()) @@ -158,15 +158,15 @@ def run(): @DIRACScript() -def main(): +def main(self): global subLogger global switchDict subLogger = gLogger.getSubLogger(__file__) # Script initialization - registerSwitches() - registerUsageMessage() - switchDict = parseSwitches() + registerSwitches(self) + registerUsageMessage(self) + switchDict = parseSwitches(self) # Run script run() diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py index 1c5b4e35563..34e7aa8f5ad 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py @@ -34,7 +34,7 @@ subLogger = None -def registerSwitches(): +def registerSwitches(self): """ Registers all switches that can be used while calling the script from the command line interface. @@ -55,10 +55,10 @@ def registerSwitches(): ) for switch in switches: - Script.registerSwitch('', switch[0], switch[1]) + self.registerSwitch('', switch[0], switch[1]) -def registerUsageMessage(): +def registerUsageMessage(self): """ Takes the script __doc__ and adds the DIRAC version to it """ @@ -66,16 +66,16 @@ def registerUsageMessage(): usageMessage = 'DIRAC version: %s \n' % version usageMessage += __doc__ - Script.setUsageMessage(usageMessage) + self.setUsageMessage(usageMessage) -def parseSwitches(): +def parseSwitches(self): """ Parses the arguments passed by the user """ - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 3: error("Missing all mandatory 'query', 'element', 'tableType' arguments") elif args[0].lower() not in ('select', 'add', 'modify', 'delete'): @@ -87,7 +87,7 @@ def parseSwitches(): else: query = args[0].lower() - switches = dict(Script.getUnprocessedSwitches()) + switches = dict(self.getUnprocessedSwitches()) # Default values switches.setdefault('name', None) @@ -242,7 +242,7 @@ def error(msg): subLogger.error("\nERROR:") subLogger.error("\t" + msg) subLogger.error("\tPlease, check documentation below") - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) def confirm(query, matches): @@ -417,15 +417,15 @@ def run(args, switchDictSet): @DIRACScript() -def main(): +def main(self): global subLogger subLogger = gLogger.getSubLogger(__file__) # Script initialization - registerSwitches() - registerUsageMessage() - args, switchDict = parseSwitches() + registerSwitches(self) + registerUsageMessage(self) + args, switchDict = parseSwitches(self) # Unpack switchDict if 'name' or 'statusType' have multiple values switchDictSet = unpack(switchDict) diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py index 5660a7f6f47..44765d6364d 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py @@ -32,7 +32,7 @@ subLogger = None -def registerSwitches(): +def registerSwitches(self): """ Registers all switches that can be used while calling the script from the command line interface. @@ -51,10 +51,10 @@ def registerSwitches(): ) for switch in switches: - Script.registerSwitch('', switch[0], switch[1]) + self.registerSwitch('', switch[0], switch[1]) -def registerUsageMessage(): +def registerUsageMessage(self): """ Takes the script __doc__ and adds the DIRAC version to it """ @@ -62,16 +62,16 @@ def registerUsageMessage(): usageMessage = 'DIRAC version: %s \n' % version usageMessage += __doc__ - Script.setUsageMessage(usageMessage) + self.setUsageMessage(usageMessage) -def parseSwitches(): +def parseSwitches(self): """ Parses the arguments passed by the user """ - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if not args: error("Missing mandatory 'query' argument") elif not args[0].lower() in ('select', 'add', 'delete'): @@ -79,7 +79,7 @@ def parseSwitches(): else: query = args[0].lower() - switches = dict(Script.getUnprocessedSwitches()) + switches = dict(self.getUnprocessedSwitches()) # Default values switches.setdefault('downtimeID', None) @@ -197,7 +197,7 @@ def error(msg): subLogger.error("\nERROR:") subLogger.error("\t" + msg) subLogger.error("\tPlease, check documentation below") - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) def confirm(query, matches): @@ -341,16 +341,16 @@ def run(args, switchDict): @DIRACScript() -def main(): +def main(self): global subLogger global ResourceManagementClient subLogger = gLogger.getSubLogger(__file__) # Script initialization - registerSwitches() - registerUsageMessage() - args, switchDict = parseSwitches() + registerSwitches(self) + registerUsageMessage(self) + args, switchDict = parseSwitches(self) ResourceManagementClient = getattr( Utils.voimport('DIRAC.ResourceStatusSystem.Client.ResourceManagementClient'), diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_status.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_status.py index 764003ad692..24edd39763e 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_status.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_status.py @@ -24,7 +24,7 @@ subLogger = None -def registerSwitches(): +def registerSwitches(self): ''' Registers all switches that can be used while calling the script from the command line interface. @@ -41,32 +41,32 @@ def registerSwitches(): ) for switch in switches: - Script.registerSwitch('', switch[0], switch[1]) + self.registerSwitch('', switch[0], switch[1]) -def registerUsageMessage(): +def registerUsageMessage(self): ''' Takes the script __doc__ and adds the DIRAC version to it ''' usageMessage = ' DIRAC %s\n' % version usageMessage += __doc__ - Script.setUsageMessage(usageMessage) + self.setUsageMessage(usageMessage) -def parseSwitches(): +def parseSwitches(self): ''' Parses the arguments passed by the user ''' - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if args: subLogger.error("Found the following positional args '%s', but we only accept switches" % args) subLogger.error("Please, check documentation below") - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) - switches = dict(Script.getUnprocessedSwitches()) + switches = dict(self.getUnprocessedSwitches()) switches.setdefault('statusType', None) switches.setdefault('VO', 'all') @@ -75,19 +75,19 @@ def parseSwitches(): if key not in switches: subLogger.error("%s Switch missing" % key) subLogger.error("Please, check documentation below") - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) if not switches['element'] in ('Site', 'Resource', 'Node'): subLogger.error("Found %s as element switch" % switches['element']) subLogger.error("Please, check documentation below") - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) statuses = StateMachine.RSSMachine(None).getStates() if not switches['status'] in statuses: subLogger.error("Found %s as element switch" % switches['element']) subLogger.error("Please, check documentation below") - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) subLogger.debug("The switches used are:") map(subLogger.debug, switches.items()) @@ -242,16 +242,16 @@ def run(switchDict): @DIRACScript() -def main(): +def main(self): global subLogger global registerUsageMessage subLogger = gLogger.getSubLogger(__file__) # Script initialization - registerSwitches() - registerUsageMessage() - switchDict = parseSwitches() + registerSwitches(self) + registerUsageMessage(self) + switchDict = parseSwitches(self) switchDictSets = unpack(switchDict) # Run script diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py index 8d02b92a6b1..90506119592 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py @@ -30,7 +30,7 @@ switchDict = {} -def registerSwitches(): +def registerSwitches(self): """ Registers all switches that can be used while calling the script from the command line interface. @@ -47,10 +47,10 @@ def registerSwitches(): ) for switch in switches: - Script.registerSwitch('', switch[0], switch[1]) + self.registerSwitch('', switch[0], switch[1]) -def registerUsageMessage(): +def registerUsageMessage(self): """ Takes the script __doc__ and adds the DIRAC version to it """ @@ -58,22 +58,22 @@ def registerUsageMessage(): usageMessage = ' DIRAC %s\n' % version usageMessage += __doc__ - Script.setUsageMessage(usageMessage) + self.setUsageMessage(usageMessage) -def parseSwitches(): +def parseSwitches(self): """ Parses the arguments passed by the user """ - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if args: subLogger.error("Found the following positional args '%s', but we only accept switches" % args) subLogger.error("Please, check documentation below") - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) - switches = dict(Script.getUnprocessedSwitches()) + switches = dict(self.getUnprocessedSwitches()) switches.setdefault('statusType', None) switches.setdefault('days', 1) if 'releaseToken' in switches: @@ -86,12 +86,12 @@ def parseSwitches(): if key not in switches: subLogger.error("%s Switch missing" % key) subLogger.error("Please, check documentation above") - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) if not switches['element'] in ('Site', 'Resource', 'Node'): subLogger.error("Found %s as element switch" % switches['element']) subLogger.error("Please, check documentation above") - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) subLogger.debug("The switches used are:") map(subLogger.debug, switches.items()) @@ -180,7 +180,7 @@ def setToken(user): @DIRACScript() -def main(): +def main(self): """ Main function of the script. Gets the username from the proxy loaded and sets the token taking into account that user and the switchDict parameters. @@ -192,9 +192,9 @@ def main(): subLogger = gLogger.getSubLogger(__file__) # Script initialization - registerSwitches() - registerUsageMessage() - switchDict = parseSwitches() + registerSwitches(self) + registerUsageMessage(self) + switchDict = parseSwitches(self) user = proxyUser() if not user['OK']: diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py index 46d63bcbb40..7f2679d6ab7 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py @@ -28,40 +28,40 @@ DEFAULT_STATUS = "" -def registerSwitches(): +def registerSwitches(self): ''' Registers all switches that can be used while calling the script from the command line interface. ''' - Script.registerSwitch('', 'init', 'Initialize the element to the status in the CS ( applicable for StorageElements )') - Script.registerSwitch('', 'element=', 'Element family to be Synchronized ( Site, Resource or Node ) or `all`') - Script.registerSwitch('', 'defaultStatus=', 'Default element status if not given in the CS') + self.registerSwitch('', 'init', 'Initialize the element to the status in the CS ( applicable for StorageElements )') + self.registerSwitch('', 'element=', 'Element family to be Synchronized ( Site, Resource or Node ) or `all`') + self.registerSwitch('', 'defaultStatus=', 'Default element status if not given in the CS') -def registerUsageMessage(): +def registerUsageMessage(self): ''' Takes the script __doc__ and adds the DIRAC version to it ''' usageMessage = 'DIRAC %s\n' % version usageMessage += __doc__ - Script.setUsageMessage(usageMessage) + self.setUsageMessage(usageMessage) -def parseSwitches(): +def parseSwitches(self): ''' Parses the arguments passed by the user ''' - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if args: subLogger.error("Found the following positional args '%s', but we only accept switches" % args) subLogger.error("Please, check documentation below") - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) - switches = dict(Script.getUnprocessedSwitches()) + switches = dict(self.getUnprocessedSwitches()) # Default values switches.setdefault('element', None) @@ -69,7 +69,7 @@ def parseSwitches(): if not switches['element'] in ('all', 'Site', 'Resource', 'Node', None): subLogger.error("Found %s as element switch" % switches['element']) subLogger.error("Please, check documentation below") - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) subLogger.debug("The switches used are:") map(subLogger.debug, switches.items()) @@ -252,15 +252,15 @@ def run(): @DIRACScript() -def main(): +def main(self): global subLogger global switchDict global DEFAULT_STATUS subLogger = gLogger.getSubLogger(__file__) - registerSwitches() - registerUsageMessage() - switchDict = parseSwitches() + registerSwitches(self) + registerUsageMessage(self) + switchDict = parseSwitches(self) DEFAULT_STATUS = switchDict.get('defaultStatus', 'Banned') # Run script diff --git a/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py b/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py index aaa90f17bdc..f4635fa8897 100755 --- a/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py +++ b/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py @@ -21,7 +21,7 @@ @DIRACScript() -def main(): +def main(self): global ceName global Queue global Site @@ -41,9 +41,9 @@ def setQueue(args): global Queue Queue = args - Script.registerSwitch("N:", "Name=", "Computing Element Name (Mandatory)", setCEName) - Script.registerSwitch("S:", "Site=", "Site Name (Mandatory)", setSite) - Script.registerSwitch("Q:", "Queue=", "Queue Name (Mandatory)", setQueue) + self.registerSwitch("N:", "Name=", "Computing Element Name (Mandatory)", setCEName) + self.registerSwitch("S:", "Site=", "Site Name (Mandatory)", setSite) + self.registerSwitch("Q:", "Queue=", "Queue Name (Mandatory)", setQueue) Script.parseCommandLine(ignoreErrors=True) diff --git a/src/DIRAC/Resources/scripts/dirac_resource_info.py b/src/DIRAC/Resources/scripts/dirac_resource_info.py index f000a7ea1c1..a85b0114fc3 100644 --- a/src/DIRAC/Resources/scripts/dirac_resource_info.py +++ b/src/DIRAC/Resources/scripts/dirac_resource_info.py @@ -17,7 +17,7 @@ @DIRACScript() -def main(): +def main(self): from DIRAC import S_OK, gLogger, gConfig, exit as DIRACExit @@ -37,11 +37,11 @@ def setVOName(args): global voName voName = args - Script.registerSwitch("C", "ce", "Get CE info", setCEFlag) - Script.registerSwitch("S", "se", "Get SE info", setSEFlag) - Script.registerSwitch("V:", "vo=", "Get resources for the given VO. If not set, taken from the proxy", setVOName) + self.registerSwitch("C", "ce", "Get CE info", setCEFlag) + self.registerSwitch("S", "se", "Get SE info", setSEFlag) + self.registerSwitch("V:", "vo=", "Get resources for the given VO. If not set, taken from the proxy", setVOName) - Script.parseCommandLine(ignoreErrors=True) + self.parseCommandLine(ignoreErrors=True) from DIRAC.Core.Security.ProxyInfo import getVOfromProxyGroup from DIRAC.ConfigurationSystem.Client.Helpers import Resources diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py index f2d4a2cfcb9..08f4f8cc160 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py @@ -31,11 +31,11 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 2: - Script.showHelp() + self.showHelp() from DIRAC import exit as DIRACExit, gLogger @@ -87,7 +87,7 @@ def main(): outStr += '\nThere are no staging requests submitted to the site yet.'.ljust(8) else: outStr = "\nThere is no such file requested for staging. Check for typo's!" - # Script.showHelp() + # self.showHelp() gLogger.notice(outStr) DIRACExit(0) diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py index 6960a1b51bc..ea195e7c518 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py @@ -23,13 +23,13 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=False) +def main(self): + self.parseCommandLine(ignoreErrors=False) - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp() + self.showHelp() from DIRAC import exit as DIRACExit, gLogger diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py index ddad87f0661..ab20ed2d2cd 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py @@ -23,13 +23,13 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=False) +def main(self): + self.parseCommandLine(ignoreErrors=False) - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if not len(args) == 1: - Script.showHelp() + self.showHelp() from DIRAC import exit as DIRACExit, gLogger diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py index 1469f36b103..d326bb9a0da 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py @@ -15,149 +15,142 @@ showJobs: whether to ALSO list the jobs asking for these files to be staged WARNING: Query may be heavy, please use --limit switch! + +Example: + $ dirac-stager-show-requests.py --status=Staged --se=GRIDKA-RDST --limit=10 --showJobs=YES + Query limited to 10 entries + + Status LastUpdate LFN SE Reason Jobs PinExpiryTime PinLength + Staged 2013-06-05 20:10:50 /lhcb/LHCb/5.full.dst GRIDKA-RDST None ['48498752'] 2013-06-05 22:10:50 86400 + Staged 2013-06-06 15:54:29 /lhcb/LHCb/1.full.dst GRIDKA-RDST None ['48516851'] 2013-06-06 16:54:29 43200 + Staged 2013-06-07 02:35:41 /lhcb/LHCb/3.full.dst GRIDKA-RDST None ['48520736'] 2013-06-07 03:35:41 43200 + Staged 2013-06-06 04:16:50 /lhcb/LHCb/3.full.dst GRIDKA-RDST None ['48510852'] 2013-06-06 06:16:50 86400 + Staged 2013-06-07 03:44:04 /lhcb/LHCb/3.full.dst GRIDKA-RDST None ['48520737'] 2013-06-07 04:44:04 43200 + Staged 2013-06-05 23:37:46 /lhcb/LHCb/3.full.dst GRIDKA-RDST None ['48508687'] 2013-06-06 01:37:46 86400 + Staged 2013-06-10 08:50:09 /lhcb/LHCb/5.full.dst GRIDKA-RDST None ['48518896'] 2013-06-10 09:50:09 43200 + Staged 2013-06-06 11:03:25 /lhcb/LHCb/2.full.dst GRIDKA-RDST None ['48515583'] 2013-06-06 12:03:25 43200 + Staged 2013-06-06 11:11:50 /lhcb/LHCb/2.full.dst GRIDKA-RDST None ['48515072'] 2013-06-06 12:11:50 43200 + Staged 2013-06-07 03:19:26 /lhcb/LHCb/2.full.dst GRIDKA-RDST None ['48515600'] 2013-06-07 04:19:26 43200 """ from __future__ import absolute_import from __future__ import division from __future__ import print_function -_RCSID__ = "$Id$" +__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 -subLogger = None - @DIRACScript() -def main(): - def registerSwitches(): - ''' - Registers all switches that can be used while calling the script from the - command line interface. - ''' - - switches = (('status=', 'Filter per file status=(New, Offline, Waiting, Failed, StageSubmitted, Staged).' - '\n If not used, all status values will be taken into account'), - ('se=', 'Filter per Storage Element. If not used, all storage elements will be taken into account.'), - ('limit=', 'Limit the number of entries returned.'), - ('showJobs=', 'Whether to ALSO list the jobs asking for these files to be staged'), - ) - - for switch in switches: - Script.registerSwitch('', switch[0], switch[1]) - - def parseSwitches(): - ''' - Parses the arguments passed by the user - ''' - - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() - if args: - subLogger.error("Found the following positional args '%s', but we only accept switches" % args) - subLogger.error("Please, check documentation below") - Script.showHelp(exitCode=1) - - switches = dict(Script.getUnprocessedSwitches()) - - for key in ('status', 'se', 'limit'): - if key not in switches: - subLogger.warn("You're not using switch --%s, query may take long!" % key) - - if 'status' in switches and switches['status'] not in ( - 'New', 'Offline', 'Waiting', 'Failed', 'StageSubmitted', 'Staged'): - subLogger.error("Found \"%s\" as Status value. Incorrect value used!" % switches['status']) - subLogger.error("Please, check documentation below") - Script.showHelp(exitCode=1) - - subLogger.debug("The switches used are:") - map(subLogger.debug, switches.items()) - - return switches +def main(self): + subLogger = gLogger.getSubLogger(__file__) - # ............................................................................... + switches = (('status=', 'Filter per file status=(New, Offline, Waiting, Failed, StageSubmitted, Staged).' + '\n If not used, all status values will be taken into account'), + ('se=', 'Filter per Storage Element. If not used, all storage elements will be taken into account.'), + ('limit=', 'Limit the number of entries returned.'), + ('showJobs=', 'Whether to ALSO list the jobs asking for these files to be staged'), + ) - def run(): - global subLogger - - from DIRAC.StorageManagementSystem.Client.StorageManagerClient import StorageManagerClient - client = StorageManagerClient() - queryDict = {} - - if 'status' in switchDict: - queryDict['Status'] = str(switchDict['status']) - - if 'se' in switchDict: - queryDict['SE'] = str(switchDict['se']) - - # weird: if there are no switches (dictionary is empty), then the --limit is ignored!! - # must FIX that in StorageManagementDB.py! - # ugly fix: - newer = '1903-08-02 06:24:38' # select newer than - if 'limit' in switchDict: - gLogger.notice("Query limited to %s entries" % switchDict['limit']) - res = client.getCacheReplicas(queryDict, None, newer, None, None, int(switchDict['limit'])) - else: - res = client.getCacheReplicas(queryDict) - - if not res['OK']: - gLogger.error(res['Message']) - outStr = "\n" - if res['Records']: - replicas = res['Value'] - outStr += " %s" % ("Status".ljust(15)) - outStr += " %s" % ("LastUpdate".ljust(20)) - outStr += " %s" % ("LFN".ljust(80)) - outStr += " %s" % ("SE".ljust(10)) - outStr += " %s" % ("Reason".ljust(10)) - if 'showJobs' in switchDict: - outStr += " %s" % ("Jobs".ljust(10)) - outStr += " %s" % ("PinExpiryTime".ljust(15)) - outStr += " %s" % ("PinLength(sec)".ljust(15)) - outStr += "\n" + for switch in switches: + self.registerSwitch('', switch[0], switch[1]) - for crid, info in replicas.items(): - outStr += " %s" % (info['Status'].ljust(15)) - outStr += " %s" % (str(info['LastUpdate']).ljust(20)) - outStr += " %s" % (info['LFN'].ljust(30)) - outStr += " %s" % (info['SE'].ljust(15)) - outStr += " %s" % (str(info['Reason']).ljust(10)) - - # Task info - if 'showJobs' in switchDict: - resTasks = client.getTasks({'ReplicaID': crid}) - if resTasks['OK']: - if resTasks['Value']: - tasks = resTasks['Value'] - jobs = [] - for tid in tasks: - jobs.append(tasks[tid]['SourceTaskID']) - outStr += ' %s ' % (str(jobs).ljust(10)) - else: - outStr += ' %s ' % (" --- ".ljust(10)) - # Stage request info - # what if there's no request to the site yet? - resStageRequests = client.getStageRequests({'ReplicaID': crid}) - if not resStageRequests['OK']: - gLogger.error(resStageRequests['Message']) - if resStageRequests['Records']: - stageRequests = resStageRequests['Value'] - for info in stageRequests.values(): - outStr += " %s" % (str(info['PinExpiryTime']).ljust(20)) - outStr += " %s" % (str(info['PinLength']).ljust(10)) - outStr += "\n" - - gLogger.notice(outStr) - else: - gLogger.notice("No entries") + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() + if args: + subLogger.error("Found the following positional args '%s', but we only accept switches" % args) + subLogger.error("Please, check documentation below") + self.showHelp(exitCode=1) - subLogger = gLogger.getSubLogger(__file__) + switches = dict(self.getUnprocessedSwitches()) + + for key in ('status', 'se', 'limit'): + if key not in switches: + subLogger.warn("You're not using switch --%s, query may take long!" % key) - registerSwitches() + if 'status' in switches and switches['status'] not in ( + 'New', 'Offline', 'Waiting', 'Failed', 'StageSubmitted', 'Staged'): + subLogger.error("Found \"%s\" as Status value. Incorrect value used!" % switches['status']) + subLogger.error("Please, check documentation below") + self.showHelp(exitCode=1) - switchDict = parseSwitches() - run() + subLogger.debug("The switches used are:") + map(subLogger.debug, switches.items()) + + # ............................................................................... + + from DIRAC.StorageManagementSystem.Client.StorageManagerClient import StorageManagerClient + client = StorageManagerClient() + queryDict = {} + + if 'status' in switches: + queryDict['Status'] = str(switches['status']) + + if 'se' in switches: + queryDict['SE'] = str(switches['se']) + + # weird: if there are no switches (dictionary is empty), then the --limit is ignored!! + # must FIX that in StorageManagementDB.py! + # ugly fix: + newer = '1903-08-02 06:24:38' # select newer than + if 'limit' in switches: + gLogger.notice("Query limited to %s entries" % switches['limit']) + res = client.getCacheReplicas(queryDict, None, newer, None, None, int(switches['limit'])) + else: + res = client.getCacheReplicas(queryDict) + + if not res['OK']: + gLogger.error(res['Message']) + outStr = "\n" + if res['Records']: + replicas = res['Value'] + outStr += " %s" % ("Status".ljust(15)) + outStr += " %s" % ("LastUpdate".ljust(20)) + outStr += " %s" % ("LFN".ljust(80)) + outStr += " %s" % ("SE".ljust(10)) + outStr += " %s" % ("Reason".ljust(10)) + if 'showJobs' in switches: + outStr += " %s" % ("Jobs".ljust(10)) + outStr += " %s" % ("PinExpiryTime".ljust(15)) + outStr += " %s" % ("PinLength(sec)".ljust(15)) + outStr += "\n" + + for crid, info in replicas.items(): + outStr += " %s" % (info['Status'].ljust(15)) + outStr += " %s" % (str(info['LastUpdate']).ljust(20)) + outStr += " %s" % (info['LFN'].ljust(30)) + outStr += " %s" % (info['SE'].ljust(15)) + outStr += " %s" % (str(info['Reason']).ljust(10)) + + # Task info + if 'showJobs' in switches: + resTasks = client.getTasks({'ReplicaID': crid}) + if resTasks['OK']: + if resTasks['Value']: + tasks = resTasks['Value'] + jobs = [] + for tid in tasks: + jobs.append(tasks[tid]['SourceTaskID']) + outStr += ' %s ' % (str(jobs).ljust(10)) + else: + outStr += ' %s ' % (" --- ".ljust(10)) + # Stage request info + # what if there's no request to the site yet? + resStageRequests = client.getStageRequests({'ReplicaID': crid}) + if not resStageRequests['OK']: + gLogger.error(resStageRequests['Message']) + if resStageRequests['Records']: + stageRequests = resStageRequests['Value'] + for info in stageRequests.values(): + outStr += " %s" % (str(info['PinExpiryTime']).ljust(20)) + outStr += " %s" % (str(info['PinLength']).ljust(10)) + outStr += "\n" + + gLogger.notice(outStr) + else: + gLogger.notice("No entries") # Bye DIRACExit(0) @@ -165,21 +158,3 @@ def run(): if __name__ == "__main__": main() - - -''' Example: -dirac-stager-show-requests.py --status=Staged --se=GRIDKA-RDST --limit=10 --showJobs=YES -Query limited to 10 entries - -Status LastUpdate LFN SE Reason Jobs PinExpiryTime PinLength -Staged 2013-06-05 20:10:50 /lhcb/LHCb/Collision12/FULL.DST/00020846/0005/00020846_00054816_1.full.dst GRIDKA-RDST None ['48498752'] 2013-06-05 22:10:50 86400 -Staged 2013-06-06 15:54:29 /lhcb/LHCb/Collision12/FULL.DST/00020846/0001/00020846_00013202_1.full.dst GRIDKA-RDST None ['48516851'] 2013-06-06 16:54:29 43200 -Staged 2013-06-07 02:35:41 /lhcb/LHCb/Collision12/FULL.DST/00020846/0003/00020846_00032726_1.full.dst GRIDKA-RDST None ['48520736'] 2013-06-07 03:35:41 43200 -Staged 2013-06-06 04:16:50 /lhcb/LHCb/Collision12/FULL.DST/00020846/0003/00020846_00030567_1.full.dst GRIDKA-RDST None ['48510852'] 2013-06-06 06:16:50 86400 -Staged 2013-06-07 03:44:04 /lhcb/LHCb/Collision12/FULL.DST/00020846/0003/00020846_00032699_1.full.dst GRIDKA-RDST None ['48520737'] 2013-06-07 04:44:04 43200 -Staged 2013-06-05 23:37:46 /lhcb/LHCb/Collision12/FULL.DST/00020846/0003/00020846_00032576_1.full.dst GRIDKA-RDST None ['48508687'] 2013-06-06 01:37:46 86400 -Staged 2013-06-10 08:50:09 /lhcb/LHCb/Collision12/FULL.DST/00020846/0005/00020846_00056424_1.full.dst GRIDKA-RDST None ['48518896'] 2013-06-10 09:50:09 43200 -Staged 2013-06-06 11:03:25 /lhcb/LHCb/Collision12/FULL.DST/00020846/0002/00020846_00022161_1.full.dst GRIDKA-RDST None ['48515583'] 2013-06-06 12:03:25 43200 -Staged 2013-06-06 11:11:50 /lhcb/LHCb/Collision12/FULL.DST/00020846/0002/00020846_00029215_1.full.dst GRIDKA-RDST None ['48515072'] 2013-06-06 12:11:50 43200 -Staged 2013-06-07 03:19:26 /lhcb/LHCb/Collision12/FULL.DST/00020846/0002/00020846_00022323_1.full.dst GRIDKA-RDST None ['48515600'] 2013-06-07 04:19:26 43200 -''' # NOQA diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py index 67d145295c8..7b13a5f987b 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py @@ -8,7 +8,7 @@ Currently used Cache per SE is also reported. (active pins) Example: - dirac-stager-show-stats + $ dirac-stager-show-stats Status SE NumberOfFiles Size(GB) -------------------------------------------------------------------------- @@ -33,8 +33,8 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=False) +def main(self): + self.parseCommandLine(ignoreErrors=False) from DIRAC.StorageManagementSystem.Client.StorageManagerClient import StorageManagerClient client = StorageManagerClient() diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py index ad5299ec006..cb4169c1c49 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py @@ -4,8 +4,8 @@ # Author : Daniela Remenska ######################################################################## """ -- submit staging requests for a particular Storage Element! Default DIRAC JobID will be =0. - (not visible in the Job monitoring list though) +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 @@ -13,6 +13,21 @@ Arguments: : LFN to Stage (or local file with list of LFNs) : Name of Storage Element + +Example: + $ dirac-stager-stage-files.py filesToStage.txt GRIDKA-RDST + Stage request submitted for LFNs: + ['/lhcb/LHCb/Collision12/FULL.DST/00020846/0002/00020846_00023458_1.full.dst', + '/lhcb/LHCb/Collision12/FULL.DST/00020846/0003/00020846_00032669_1.full.dst', + '/lhcb/LHCb/Collision12/FULL.DST/00020846/0003/00020846_00032666_1.full.dst'] + SE= GRIDKA-RDST + You can check their status and progress with dirac-stager-monitor-file + + $ dirac-stager-stage-files.py /lhcb/LHCb/Collision12/FULL.DST/00020846/0003/00020846_00032641_1.full.dst GRIDKA-RDST + Stage request submitted for LFNs: + ['/lhcb/LHCb/Collision12/FULL.DST/00020846/0003/00020846_00032641_1.full.dst'] + SE= GRIDKA-RDST + You can check their status and progress with dirac-stager-monitor-file """ from __future__ import absolute_import from __future__ import division @@ -25,13 +40,13 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) +def main(self): + self.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 2: - Script.showHelp() + self.showHelp() seName = args[1] fileName = args[0] @@ -73,19 +88,3 @@ def main(): if __name__ == "__main__": main() - - -'''Example1: -dirac-stager-stage-files.py filesToStage.txt GRIDKA-RDST -Stage request submitted for LFNs: -['/lhcb/LHCb/Collision12/FULL.DST/00020846/0002/00020846_00023458_1.full.dst', '/lhcb/LHCb/Collision12/FULL.DST/00020846/0003/00020846_00032669_1.full.dst', '/lhcb/LHCb/Collision12/FULL.DST/00020846/0003/00020846_00032666_1.full.dst'] -SE= GRIDKA-RDST -You can check their status and progress with dirac-stager-monitor-file - -Example2: -dirac-stager-stage-files.py /lhcb/LHCb/Collision12/FULL.DST/00020846/0003/00020846_00032641_1.full.dst GRIDKA-RDST -Stage request submitted for LFNs: -['/lhcb/LHCb/Collision12/FULL.DST/00020846/0003/00020846_00032641_1.full.dst'] -SE= GRIDKA-RDST -You can check their status and progress with dirac-stager-monitor-file -''' # NOQA diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py b/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py index 6ebeaa84ee3..abe84cc4dd1 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py @@ -136,15 +136,15 @@ def __runJobLocally(jobID, basepath, vo): @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=False) - Script.registerSwitch('D:', 'Download=', 'Defines data acquisition as DownloadInputData') - Script.registerSwitch('P:', 'Protocol=', 'Defines data acquisition as InputDataByProtocol') +def main(self): + self.parseCommandLine(ignoreErrors=False) + self.registerSwitch('D:', 'Download=', 'Defines data acquisition as DownloadInputData') + self.registerSwitch('P:', 'Protocol=', 'Defines data acquisition as InputDataByProtocol') _downloadinputdata = False _jobID = None - for switch in Script.getUnprocessedSwitches(): + for switch in self.getUnprocessedSwitches(): if switch[0] in ('D', 'Download'): _downloadinputdata = True _jobID = switch[1] diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py index c0d8b9142df..c77824ce4e2 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py @@ -18,14 +18,14 @@ @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 2: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) # get arguments inputFileName = args[1] diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py index 92970c0b566..ec01ba14023 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py @@ -16,12 +16,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine() - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine() + args = self.getPositionalArgs() if not args: - Script.showHelp() + self.showHelp() transIDs = [int(arg) for arg in args] diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py index 696ee06c296..3a34fd61356 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py @@ -16,12 +16,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if not args: - Script.showHelp() + self.showHelp() from DIRAC.TransformationSystem.Agent.TransformationCleaningAgent import TransformationCleaningAgent from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py index 05a87f660ed..e7d7d9cf762 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py @@ -11,8 +11,8 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=False) +def main(self): + self.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 577f63c3f57..9e10ee63984 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py @@ -18,14 +18,14 @@ @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) != 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) tc = TransformationClient() res = tc.getTransformationFiles({'TransformationID': args[0]}) diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py index f855a192ce1..c5f6f85ea68 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py @@ -29,15 +29,15 @@ def setTransID(self, transID): return S_OK() def registerSwitches(self): - Script.registerSwitch('T:', 'TransID=', 'TransID to Check/Fix', self.setTransID) - Script.registerSwitch('X', 'Enabled', 'Enable the changes', self.setEnabled) + self.registerSwitch('T:', 'TransID=', 'TransID to Check/Fix', self.setTransID) + self.registerSwitch('X', 'Enabled', 'Enable the changes', self.setEnabled) @DIRACScript() -def main(): +def main(self): PARAMS = Params() - PARAMS.registerSwitches() - Script.parseCommandLine(ignoreErrors=False) + PARAMS.registerSwitches(self) + self.parseCommandLine(ignoreErrors=False) # Create Data Recovery Agent and run over single transformation. from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py index a080b50add8..f0204f39583 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py @@ -17,12 +17,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine() - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine() + args = self.getPositionalArgs() if not args: - Script.showHelp() + self.showHelp() transIDs = [int(arg) for arg in args] diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_replication.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_replication.py index da1b4b16842..eb615eaf006 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_replication.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_replication.py @@ -17,18 +17,18 @@ @DIRACScript() -def main(): +def main(self): """reads command line parameters, makes check and creates replication transformation""" from DIRAC import gLogger, exit as dexit from DIRAC.TransformationSystem.Utilities.ReplicationCLIParameters import Params clip = Params() - clip.registerSwitches(Script) - Script.parseCommandLine() + clip.registerSwitches(self) + self.parseCommandLine() from DIRAC.TransformationSystem.Utilities.ReplicationTransformation import createDataTransformation - if not clip.checkSettings(Script)['OK']: + if not clip.checkSettings(self)['OK']: gLogger.error("ERROR: Missing settings") dexit(1) for metaValue in clip.metaValues: diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py index ab8c79320f2..dc4aa0d7f24 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py @@ -16,12 +16,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine() +def main(self): + self.parseCommandLine() - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if not args: - Script.showHelp() + self.showHelp() transIDs = [int(arg) for arg in args] diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py index 6fb0be9cdb4..6e43a6a073f 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py @@ -20,12 +20,12 @@ @DIRACScript() -def main(): - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) pilotRef = args[0] 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 88af3776a1b..b003b4b5ae8 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_pilot_logging_info.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_pilot_logging_info.py @@ -40,12 +40,12 @@ def setJobID(optVal): @DIRACScript() -def main(): +def main(self): global uuid global jobid - Script.registerSwitch('u:', 'uuid=', 'get PilotsLogging for given Pilot UUID', setUUID) - Script.registerSwitch('j:', 'jobid=', 'get PilotsLogging for given Job ID', setJobID) - Script.parseCommandLine() + self.registerSwitch('u:', 'uuid=', 'get PilotsLogging for given Pilot UUID', setUUID) + self.registerSwitch('j:', 'jobid=', 'get PilotsLogging for given Job ID', setJobID) + self.parseCommandLine() from DIRAC.WorkloadManagementSystem.Client.PilotManagerClient import PilotManagerClient diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_show_task_queues.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_show_task_queues.py index ff5251493a7..b4490f66eb8 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_show_task_queues.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_show_task_queues.py @@ -57,12 +57,12 @@ def setTaskQueueID(optVal): @DIRACScript() -def main(): +def main(self): global verbose global taskQueueID - Script.registerSwitch("v", "verbose", "give max details about task queues", setVerbose) - Script.registerSwitch("t:", "taskQueue=", "show this task queue only", setTaskQueueID) - Script.parseCommandLine(initializeMonitor=False) + self.registerSwitch("v", "verbose", "give max details about task queues", setVerbose) + self.registerSwitch("t:", "taskQueue=", "show this task queue only", setTaskQueueID) + self.parseCommandLine(initializeMonitor=False) result = MatcherClient().getActiveTaskQueues() if not result['OK']: diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_sync_pilot.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_sync_pilot.py index 040fcd08a87..26b5f9306d5 100644 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_sync_pilot.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_sync_pilot.py @@ -30,10 +30,10 @@ def setNoMasterCS(optVal): @DIRACScript() -def main(): +def main(self): global includeMasterCS - Script.registerSwitch("n", "noMasterCS", "do not include master CS", setNoMasterCS) - Script.parseCommandLine() + self.registerSwitch("n", "noMasterCS", "do not include master CS", setNoMasterCS) + self.parseCommandLine() from DIRAC import gLogger, exit as DIRACExit from DIRAC.WorkloadManagementSystem.Utilities.PilotCStoJSONSynchronizer import PilotCStoJSONSynchronizer diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_jobexec.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_jobexec.py index 7ae1c197130..fd1e110b6a8 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_jobexec.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_jobexec.py @@ -24,10 +24,10 @@ @DIRACScript() -def main(): +def main(self): # Register workflow parameter switch - Script.registerSwitch('p:', 'parameter=', 'Parameters that are passed directly to the workflow') - Script.parseCommandLine() + self.registerSwitch('p:', 'parameter=', 'Parameters that are passed directly to the workflow') + self.parseCommandLine() # from DIRAC.Core.Workflow.Parameter import * from DIRAC import gLogger @@ -71,7 +71,7 @@ def jobexec(jobxml, wfParameters): return workflow.execute() - positionalArgs = Script.getPositionalArgs() + positionalArgs = self.getPositionalArgs() if len(positionalArgs) != 1: gLogger.debug('Positional arguments were %s' % (positionalArgs)) DIRAC.abort(1, "Must specify the Job XML file description") @@ -80,7 +80,7 @@ def jobexec(jobxml, wfParameters): gLogger.info('JobID: %s' % (os.environ['JOBID'])) jobXMLfile = positionalArgs[0] - parList = Script.getUnprocessedSwitches() + parList = self.getUnprocessedSwitches() parDict = {} for switch, parameter in parList: if switch == "p": diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_cpu_normalization.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_cpu_normalization.py index 5ba91649935..01dd9ff85a1 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_cpu_normalization.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_cpu_normalization.py @@ -30,15 +30,15 @@ @DIRACScript() -def main(): - Script.registerSwitch("U", "Update", "Update dirac.cfg with the resulting value") - Script.registerSwitch("R:", "Reconfig=", "Update given configuration file with the resulting value") - Script.parseCommandLine(ignoreErrors=True) +def main(self): + self.registerSwitch("U", "Update", "Update dirac.cfg with the resulting value") + self.registerSwitch("R:", "Reconfig=", "Update given configuration file with the resulting value") + self.parseCommandLine(ignoreErrors=True) update = False configFile = None - for unprocSw in Script.getUnprocessedSwitches(): + for unprocSw in self.getUnprocessedSwitches(): if unprocSw[0] in ("U", "Update"): update = True elif unprocSw[0] in ("R", "Reconfig"): diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_queue_cpu_time.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_queue_cpu_time.py index 23ac135f7a2..c9730526d1c 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_queue_cpu_time.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_queue_cpu_time.py @@ -18,13 +18,13 @@ @DIRACScript() -def main(): - Script.registerSwitch("C:", "CPUNormalizationFactor=", "CPUNormalizationFactor, in case it is known") - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() +def main(self): + self.registerSwitch("C:", "CPUNormalizationFactor=", "CPUNormalizationFactor, in case it is known") + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() CPUNormalizationFactor = 0.0 - for unprocSw in Script.getUnprocessedSwitches(): + for unprocSw in self.getUnprocessedSwitches(): if unprocSw[0] in ("C", "CPUNormalizationFactor"): CPUNormalizationFactor = float(unprocSw[1]) diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn.py index a523cb4eaf9..4a7c673bd12 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(): +def main(self): site = 'BOINC.World.org' status = ["Running"] minorStatus = None @@ -33,21 +33,21 @@ def main(): full = False until = None batchIDs = None - Script.registerSwitch('', 'Site=', ' Select site (default: %s)' % site) - Script.registerSwitch('', 'Status=', ' Select status (default: %s)' % status) - Script.registerSwitch('', 'MinorStatus=', ' Select minor status') - Script.registerSwitch('', 'WorkerNode=', ' Select WN') - Script.registerSwitch('', 'BatchID=', ' Select batch jobID') - Script.registerSwitch('', 'Since=', ' Date since when to select jobs, or number of days (default: today)') - Script.registerSwitch('', 'Date=', ' Specify the date (check for a full day)') - Script.registerSwitch('', 'Full', ' Printout full list of job (default: False except if --WorkerNode)') - - Script.parseCommandLine() + self.registerSwitch('', 'Site=', ' Select site (default: %s)' % site) + self.registerSwitch('', 'Status=', ' Select status (default: %s)' % status) + self.registerSwitch('', 'MinorStatus=', ' Select minor status') + self.registerSwitch('', 'WorkerNode=', ' Select WN') + self.registerSwitch('', 'BatchID=', ' Select batch jobID') + self.registerSwitch('', 'Since=', ' Date since when to select jobs, or number of days (default: today)') + self.registerSwitch('', 'Date=', ' Specify the date (check for a full day)') + self.registerSwitch('', 'Full', ' Printout full list of job (default: False except if --WorkerNode)') + + self.parseCommandLine() from DIRAC import gLogger from DIRAC.Interfaces.API.Dirac import Dirac from DIRAC.WorkloadManagementSystem.Client.JobMonitoringClient import JobMonitoringClient - switches = Script.getUnprocessedSwitches() + switches = self.getUnprocessedSwitches() for switch in switches: if switch[0] == 'Site': site = switch[1] diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn_parameters.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn_parameters.py index 5778fe60418..f8909a3a10e 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn_parameters.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn_parameters.py @@ -34,14 +34,14 @@ def setQueue(args): @DIRACScript() -def main(): +def main(self): global ceName global Site global Queue - Script.registerSwitch("N:", "Name=", "Computing Element Name (Mandatory)", setCEName) - Script.registerSwitch("S:", "Site=", "Site Name (Mandatory)", setSite) - Script.registerSwitch("Q:", "Queue=", "Queue Name (Mandatory)", setQueue) - Script.parseCommandLine(ignoreErrors=True) + self.registerSwitch("N:", "Name=", "Computing Element Name (Mandatory)", setCEName) + self.registerSwitch("S:", "Site=", "Site Name (Mandatory)", setSite) + self.registerSwitch("Q:", "Queue=", "Queue Name (Mandatory)", setQueue) + self.parseCommandLine(ignoreErrors=True) gLogger.info("Getting number of processors") numberOfProcessor = JobParameters.getNumberOfProcessors(Site, ceName, Queue) diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_match.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_match.py index 1a3e603f5c1..2c0886b9db7 100644 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_match.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_match.py @@ -37,18 +37,18 @@ def setSites(optVal_): @DIRACScript() -def main(): +def main(self): global fullMatch global sites - Script.registerSwitch("F", "full-match", "Check all the matching criteria", setFullMatch) - Script.registerSwitch("S:", "site=", "Check matching for these sites (comma separated list)", setSites) + self.registerSwitch("F", "full-match", "Check all the matching criteria", setFullMatch) + self.registerSwitch("S:", "site=", "Check matching for these sites (comma separated list)", setSites) - Script.parseCommandLine(ignoreErrors=True) - args = Script.getPositionalArgs() + self.parseCommandLine(ignoreErrors=True) + args = self.getPositionalArgs() if len(args) == 0: gLogger.error("Error: No job description provided") - Script.showHelp(exitCode=1) + self.showHelp(exitCode=1) from DIRAC.Core.Security.ProxyInfo import getVOfromProxyGroup from DIRAC.ConfigurationSystem.Client.Helpers import Resources diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_pilot_job_info.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_pilot_job_info.py index a3338abdcf5..37f4e1e4bbf 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_pilot_job_info.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_pilot_job_info.py @@ -31,18 +31,18 @@ def _stringInList(subStr, sList): @DIRACScript() -def main(): +def main(self): parameters = ['OwnerDN', 'StartExecTime', 'EndExecTime'] - Script.registerSwitch('', 'Parameters=', ' List of strings to be matched by job parameters or attributes') - Script.parseCommandLine(ignoreErrors=True) - for switch in Script.getUnprocessedSwitches(): + self.registerSwitch('', 'Parameters=', ' List of strings to be matched by job parameters or attributes') + self.parseCommandLine(ignoreErrors=True) + for switch in self.getUnprocessedSwitches(): if switch[0] == 'Parameters': parameters += [par for par in switch[1].split(',')] parameters = [(i, par.lower()) for i, par in enumerate(parameters) if par] - args = Script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) < 1: - Script.showHelp() + self.showHelp() from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin from DIRAC.Interfaces.API.Dirac import Dirac diff --git a/tests/CI/docker-compose.yml b/tests/CI/docker-compose.yml index 2ee850df32e..c722e3448e0 100644 --- a/tests/CI/docker-compose.yml +++ b/tests/CI/docker-compose.yml @@ -11,7 +11,7 @@ services: healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] timeout: 20s - retries: 10 + retries: 20 elasticsearch: image: elasticsearch:${ES_VER} diff --git a/tests/CI/run_docker_setup.sh b/tests/CI/run_docker_setup.sh new file mode 100755 index 00000000000..a6d814539f5 --- /dev/null +++ b/tests/CI/run_docker_setup.sh @@ -0,0 +1,300 @@ +#!/usr/bin/env bash +# set -euo pipefail +set -eo pipefail +IFS=$'\n\t' +set -x + +BUILD_DIR=$PWD/integration_test_results +mkdir -p "${BUILD_DIR}" +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" +DIRAC_BASE_DIR=$(realpath "${SCRIPT_DIR}/../..") + +export CI_REGISTRY_IMAGE=${CI_REGISTRY_IMAGE:-diracgrid} +export HOST_OS=${HOST_OS:-cc7} +export MYSQL_VER=${MYSQL_VER:-8.0} +export ES_VER=${ES_VER:-7.9.1} + +export DOCKER_USER=dirac +export USER_HOME=/home/${DOCKER_USER} +export WORKSPACE=$USER_HOME + +copyLocalSource() { + # Copies local source and test code to docker containers, if they are directories + CONTAINER_NAME=$1 + CONFIG_PATH=$2 + + # Drop into a subshell to avoid poluting the environment + ( + source "$CONFIG_PATH" + + docker exec "${CONTAINER_NAME}" mkdir -p "$WORKSPACE/LocalRepo/TestCode" + for repo_path in "${TESTREPO[@]}"; do + if [[ -n "${repo_path}" ]] && [[ -d "${repo_path}" ]]; then + docker cp "${repo_path}" "${CONTAINER_NAME}:$WORKSPACE/LocalRepo/TestCode/$(basename "${repo_path}")" + sed -i "s@\(TESTREPO+=..\)$(dirname "${repo_path}")\(/$(basename "${repo_path}")..\)@\1${WORKSPACE}/LocalRepo/TestCode\2@" "$CONFIG_PATH" + fi + done + + docker exec "${CONTAINER_NAME}" mkdir -p "$WORKSPACE/LocalRepo/ALTERNATIVE_MODULES" + for module_path in "${ALTERNATIVE_MODULES[@]}"; do + if [[ -n "${module_path}" ]] && [[ -d "${module_path}" ]]; then + docker cp "${module_path}" "${CONTAINER_NAME}:$WORKSPACE/LocalRepo/ALTERNATIVE_MODULES/$(basename "${module_path}")" + sed -i "s@\(ALTERNATIVE_MODULES+=..\)$(dirname "${module_path}")\(/$(basename "${module_path}")..\)@\1${WORKSPACE}/LocalRepo/ALTERNATIVE_MODULES\2@" "$CONFIG_PATH" + fi + done + ) +} +cd "$SCRIPT_DIR" + +prepareEnvironment() { + if [[ -z "$TMP" ]]; then + TMP=/tmp/DIRAC_CI_$(date +"%Y%m%d%I%M%p") + mkdir -p "$TMP" + fi + if [[ -z "$CLIENTCONFIG" ]]; then + CLIENTCONFIG=${BUILD_DIR}/CLIENTCONFIG + fi + if [[ -z "$SERVERCONFIG" ]]; then + SERVERCONFIG=${BUILD_DIR}/SERVERCONFIG + fi + + # GitLab variables + { + echo "#!/usr/bin/env bash" + echo "# This file contains all the environment variables necessary to run a full integration test" + echo "" + echo "export DEBUG=${DEBUG:-True}" + echo "" + echo "# Settings for external services" + echo "" + echo "# MYSQL Settings" + echo "export DB_USER=${DB_USER:-Dirac}" + echo "export DB_PASSWORD=${DB_PASSWORD:-Dirac}" + echo "export DB_ROOTUSER=${DB_ROOTUSER:-root}" + echo "export DB_ROOTPWD=${DB_ROOTPWD:-password}" + echo "export DB_HOST=${DB_HOST:-mysql}" + echo "export DB_PORT=${DB_PORT:-3306}" + echo "" + echo "# ElasticSearch settings" + echo "export NoSQLDB_HOST=${NoSQLDB_HOST:-elasticsearch}" + echo "export NoSQLDB_PORT=${NoSQLDB_PORT:-9200}" + echo "" + echo "# Hostnames" + echo "export SERVER_HOST=${SERVER_HOST:-server}" + echo "export CLIENT_HOST=${CLIENT_HOST:-client}" + echo "" + echo "# Settings for DIRAC installation" + echo "export PRERELEASE=${PRERELEASE:-}" + echo "export DIRAC_RELEASE=${DIRAC_RELEASE:-}" + echo "export DIRACBRANCH=${DIRACBRANCH:-}" + echo "" + echo "# repository to get tests and install scripts from" + echo "export TESTBRANCH=${TESTBRANCH:-ci}" + echo "export DIRAC_CI_SETUP_SCRIPT=${WORKSPACE}/TestCode/${DIRAC_CI_SETUP_SCRIPT:-DIRAC/tests/Jenkins/dirac_ci.sh}" + echo "" + echo "export DIRACOSVER=${DIRACOSVER:-master}" + echo "export DIRACOS_TARBALL_PATH=${DIRACOS_TARBALL_PATH:-}" + echo "" + echo "# Test specific variables" + echo "export WORKSPACE=${WORKSPACE}" + echo "export TEST_HTTPS=${TEST_HTTPS}" + echo "" + echo "# Optional parameters" + + echo "declare -a TESTREPO" + if [[ -n "${TESTREPO+x}" ]]; then + for repo_path in "${TESTREPO[@]}"; do + echo "TESTREPO+=(\"${repo_path}\")" + done + else + echo "TESTREPO+=(\"${DIRAC_BASE_DIR}\")" + fi + + echo "declare -a ALTERNATIVE_MODULES" + + echo "declare -a INSTALLOPTIONS" + if [[ -n "${INSTALLOPTIONS+x}" ]]; then + for option in "${INSTALLOPTIONS[@]}"; do + echo "INSTALLOPTIONS+=(\"${option}\")" + done + fi + } > "${SERVERCONFIG}" + + # find the latest version, unless it's integration + if [[ "${CI_COMMIT_REF_NAME}" = 'refs/heads/integration' ]]; then + { + echo "export DIRAC_RELEASE=integration" + } >> "${SERVERCONFIG}" + + elif [[ "${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}" = 'integration' ]]; then + { + echo "export DIRAC_RELEASE=integration" + } >> "${SERVERCONFIG}" + else + majorVersion=$(grep "majorVersion =" "${DIRAC_BASE_DIR}/src/DIRAC/__init__.py" | cut -d '=' -f 2) + minorVersion=$(grep "minorVersion =" "${DIRAC_BASE_DIR}/src/DIRAC/__init__.py" | cut -d '=' -f 2) + { + echo "export DIRACBRANCH=${DIRACBRANCH:-v${majorVersion// }r${minorVersion// }}" + } >> "${SERVERCONFIG}" + fi + + if [[ -n "${EXTRA_ENVIRONMENT_CONFIG+x}" ]]; then + for line in "${EXTRA_ENVIRONMENT_CONFIG[@]}"; do + echo "${line}" >> "${SERVERCONFIG}" + done + fi + + cp "${SERVERCONFIG}" "${CLIENTCONFIG}" + + if [[ "${SERVER_USE_PYTHON3:-}" == "Yes" ]]; then + echo "export SERVER_USE_PYTHON3=${SERVER_USE_PYTHON3}" >> "${SERVERCONFIG}" + echo "ALTERNATIVE_MODULES+=(\"${DIRAC_BASE_DIR}/\")" >> "${SERVERCONFIG}" + else + if [[ -n "${ALTERNATIVE_MODULES+x}" ]]; then + for module_path in "${ALTERNATIVE_MODULES[@]}"; do + echo "ALTERNATIVE_MODULES+=(\"${module_path}\")" >> "${SERVERCONFIG}" + done + else + echo "ALTERNATIVE_MODULES+=(\"${DIRAC_BASE_DIR}/src/DIRAC\")" >> "${SERVERCONFIG}" + fi + fi + + if [[ -n "${SERVER_DIRACOSVER+x}" ]]; then + echo "export DIRACOSVER=${SERVER_DIRACOSVER}" >> "${SERVERCONFIG}" + fi + + if [[ "${CLIENT_USE_PYTHON3:-}" == "Yes" ]]; then + echo "export CLIENT_USE_PYTHON3=${CLIENT_USE_PYTHON3}" >> "${CLIENTCONFIG}" + echo "ALTERNATIVE_MODULES+=(\"${DIRAC_BASE_DIR}/\")" >> "${CLIENTCONFIG}" + else + if [[ -n "${ALTERNATIVE_MODULES+x}" ]]; then + for module_path in "${ALTERNATIVE_MODULES[@]}"; do + echo "ALTERNATIVE_MODULES+=(\"${module_path}\")" >> "${CLIENTCONFIG}" + done + else + echo "ALTERNATIVE_MODULES+=(\"${DIRAC_BASE_DIR}/src/DIRAC\")" >> "${CLIENTCONFIG}" + fi + fi + + if [[ -n "${CLIENT_DIRACOSVER+x}" ]]; then + echo "export DIRACOSVER=${CLIENT_DIRACOSVER}" >> "${CLIENTCONFIG}" + fi + + echo "Generated server config file is:" + cat "${SERVERCONFIG}" + + echo "Generated client config file is:" + cat "${CLIENTCONFIG}" + + docker-compose -f ./docker-compose.yml up -d + + echo -e "\n**** $(date -u) Creating user and copying scripts ****" + + # DIRAC server user and scripts + docker exec server adduser -s /bin/bash -d "$USER_HOME" "$DOCKER_USER" + docker exec client adduser -s /bin/bash -d "$USER_HOME" "$DOCKER_USER" + + # Create database user + # Run in a subshell so we can safely source ${SERVERCONFIG} + ( + source "${SERVERCONFIG}" + docker exec mysql mysql --password=password -e "CREATE USER '${DB_USER}'@'%' IDENTIFIED BY '${DB_PASSWORD}';" + docker exec mysql mysql --password=password -e "CREATE USER '${DB_USER}'@'localhost' IDENTIFIED BY '${DB_PASSWORD}';" + docker exec mysql mysql --password=password -e "CREATE USER '${DB_USER}'@'mysql' IDENTIFIED BY '${DB_PASSWORD}';" + ) + + docker cp ./install_server.sh server:"$WORKSPACE" + docker cp ./install_client.sh client:"$WORKSPACE" + + copyLocalSource server "${SERVERCONFIG}" + copyLocalSource client "${CLIENTCONFIG}" + + docker cp "$SERVERCONFIG" server:"$WORKSPACE/CONFIG" + docker cp "$CLIENTCONFIG" client:"$WORKSPACE/CONFIG" + + # Copy DIRACOS_TARBALL_PATH if it is a local directory containing a DIRACOS tarball + if ls "${DIRACOS_TARBALL_PATH}"/diracos-*.tar.gz &> /dev/null; then + docker cp "${DIRACOS_TARBALL_PATH}" server:"${DIRACOS_TARBALL_PATH}" + docker cp "${DIRACOS_TARBALL_PATH}" client:"${DIRACOS_TARBALL_PATH}" + fi + + # Open permissions for the dirac user after the above operations + docker exec server bash -c "chown -R dirac:dirac /home/dirac" + docker exec client bash -c "chown -R dirac:dirac /home/dirac" +} + +installServer() { + docker exec server bash -c "chown -R dirac:dirac /home/dirac" + docker exec -e TERM=xterm-color -u "$DOCKER_USER" -w "$WORKSPACE" server bash ./install_server.sh |& tee "${BUILD_DIR}/log_server_install.txt" + + echo -e "\n**** $(date -u) Copying credentials and certificates ****" + docker exec client bash -c "mkdir -p $WORKSPACE/ServerInstallDIR/user $WORKSPACE/ClientInstallDIR/etc /home/dirac/.globus" + docker cp server:"$WORKSPACE/ServerInstallDIR/etc/grid-security" - | docker cp - client:"$WORKSPACE/ClientInstallDIR/etc/" + docker cp server:"$WORKSPACE/ServerInstallDIR/user/client.pem" - | docker cp - client:"$WORKSPACE/ServerInstallDIR/user/" + docker cp server:"$WORKSPACE/ServerInstallDIR/user/client.key" - | docker cp - client:"$WORKSPACE/ServerInstallDIR/user/" + docker exec client bash -c "cp $WORKSPACE/ServerInstallDIR/user/client.* $USER_HOME/.globus/" + server_uid=$(docker exec -u dirac server bash -c 'echo $UID') + client_uid=$(docker exec -u dirac client bash -c 'echo $UID') + docker cp server:"/tmp/x509up_u${server_uid}" - | docker cp - client:/tmp/ + docker exec client bash -c "chown -R dirac:dirac /home/dirac" + docker exec client bash -c "chown -R dirac:dirac /tmp/x509up_u${client_uid}" +} + +installClient() { + docker exec client bash -c "chown -R dirac:dirac /home/dirac" + docker exec -e TERM=xterm-color -u "$DOCKER_USER" -w "$WORKSPACE" client bash ./install_client.sh |& tee "${BUILD_DIR}/log_client_install.txt" +} + +testServer() { + docker exec -e TERM=xterm-color -u "$DOCKER_USER" -w "$WORKSPACE" -e INSTALLROOT="$WORKSPACE" -e INSTALLTYPE=server server \ + bash TestCode/DIRAC/tests/CI/run_tests.sh || SERVER_CODE=$? + echo ${SERVER_CODE:-0} > "${BUILD_DIR}/server_test_status" + docker cp server:/home/dirac/serverTestOutputs.txt "${BUILD_DIR}/log_server_tests.txt" +} + +testClient() { + docker exec -e TERM=xterm-color -u "$DOCKER_USER" -w "$WORKSPACE" -e INSTALLROOT="$WORKSPACE" -e INSTALLTYPE=client client \ + bash TestCode/DIRAC/tests/CI/run_tests.sh || CLIENT_CODE=$? + echo ${CLIENT_CODE:-0} > "${BUILD_DIR}/client_test_status" + docker cp client:/home/dirac/clientTestOutputs.txt "${BUILD_DIR}/log_client_tests.txt" +} + +checkErrors() { + set +x + local EXIT_CODE=0 + + # Server + if [[ ! -f "${BUILD_DIR}/server_test_status" ]]; then + echo "ERROR: Server integration have not been ran" + EXIT_CODE=1 + elif [[ "$(cat "${BUILD_DIR}/server_test_status")" = "0" ]]; then + echo "Server integration tests passed" + else + echo "ERROR: Server integration tests failed with $(cat "${BUILD_DIR}/server_test_status")" + EXIT_CODE=1 + fi + + # Client + if [[ ! -f "${BUILD_DIR}/client_test_status" ]]; then + echo "ERROR: Client integration have not been ran" + EXIT_CODE=1 + elif [[ "$(cat "${BUILD_DIR}/client_test_status")" = "0" ]]; then + echo "Client integration tests passed" + else + echo "ERROR: Client integration tests failed with $(cat "${BUILD_DIR}/client_test_status")" + EXIT_CODE=1 + fi + + exit $EXIT_CODE +} + +if [[ "${0}" = "${BASH_SOURCE[0]}" ]]; then + prepareEnvironment + installServer + installClient + testServer + testClient + checkErrors +else + echo "Skipping setup, installation and testing as ${BASH_SOURCE[0]} is being sourced" +fi diff --git a/tests/Jenkins/dirac_ci.sh b/tests/Jenkins/dirac_ci.sh index 70b20b1365e..2620814b157 100644 --- a/tests/Jenkins/dirac_ci.sh +++ b/tests/Jenkins/dirac_ci.sh @@ -314,7 +314,7 @@ fullInstallDIRAC() { echo "==> calling dirac-install-component DataManagement MultiVOFileCatalog -m FileCatalog -p Port=9198 -p Database=MultiVOFileCatalogDB ${DEBUG}" if ! dirac-install-component DataManagement MultiVOFileCatalog -m FileCatalog -p Port=9198 -p Database=MultiVOFileCatalogDB "${DEBUG}"; then echo 'ERROR: dirac-install-component failed' >&2 - exit 1 + #exit 1 fi #fix the DFC services options python "${TESTCODE}/DIRAC/tests/Jenkins/dirac-cfg-update-services.py" "${DEBUG}" diff --git a/tests/Jenkins/utilities.sh b/tests/Jenkins/utilities.sh index 2d67a3f9c80..01f33b84d94 100644 --- a/tests/Jenkins/utilities.sh +++ b/tests/Jenkins/utilities.sh @@ -804,7 +804,7 @@ diracServices(){ echo "==> calling dirac-install-component $serv ${DEBUG}" if ! dirac-install-component "$serv" "${DEBUG}"; then echo 'ERROR: dirac-install-component failed' >&2 - exit 1 + #exit 1 fi done } @@ -818,7 +818,7 @@ diracSEs(){ mkdir -p "${seDir}" if ! dirac-install-component DataManagement SE-1 -m StorageElement -p BasePath="${seDir}" -p Port=9148 "${DEBUG}"; then echo 'ERROR: dirac-install-component failed' >&2 - exit 1 + #exit 1 fi echo "==> Installing SE-2" @@ -826,7 +826,7 @@ diracSEs(){ mkdir -p "${seDir}" if ! dirac-install-component DataManagement SE-2 -m StorageElement -p BasePath="${seDir}" -p Port=9147 "${DEBUG}"; then echo 'ERROR: dirac-install-component failed' >&2 - exit 1 + #exit 1 fi } @@ -911,7 +911,7 @@ diracDBs(){ for db in $dbs; do if ! dirac-install-db "$db" "${DEBUG}"; then echo 'ERROR: dirac-install-db failed' >&2 - exit 1 + #exit 1 fi done } From c72fc4003aff0599206ce7a42360a610875faef4 Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Sun, 14 Mar 2021 03:14:04 +0100 Subject: [PATCH 02/43] fix --- src/DIRAC/Core/Utilities/DIRACScript.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/DIRAC/Core/Utilities/DIRACScript.py b/src/DIRAC/Core/Utilities/DIRACScript.py index 5254f511c1b..b76600f6858 100644 --- a/src/DIRAC/Core/Utilities/DIRACScript.py +++ b/src/DIRAC/Core/Utilities/DIRACScript.py @@ -16,6 +16,8 @@ from DIRAC.Core.Utilities.Extensions import entrypointToExtension, extensionsByPriority +localCfg = LocalConfiguration() + class DIRACScript(object): """Decorator for providing command line executables @@ -25,10 +27,11 @@ class DIRACScript(object): def __init__(self): """ c'tor """ + global localCfg self.scriptName = None self.alreadyInitialized = False self.doc = inspect.currentframe().f_back.f_globals['__doc__'] - self.localCfg = LocalConfiguration() + self.localCfg = localCfg self.localCfg.setUsageMessage(self.doc) self.showHelp = self.localCfg.showHelp From 408c82f54a978a222ed95a86a9476a97a3bd0afa Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Mon, 15 Mar 2021 00:14:33 +0100 Subject: [PATCH 03/43] fix py3 scripts --- .../dirac-my-great-script.py | 89 ++ .../scripts/dirac_accounting_decode_fileid.py | 2 +- .../scripts/dirac_admin_accounting_cli.py | 2 +- .../Client/LocalConfiguration.py | 2 - .../scripts/dirac_admin_add_resources.py | 2 +- .../scripts/dirac_admin_add_shifter.py | 2 +- .../scripts/dirac_admin_add_site.py | 2 +- .../scripts/dirac_admin_bdii_info.py | 2 +- .../dirac_admin_check_config_options.py | 2 +- .../scripts/dirac_admin_sort_cs_sites.py | 2 +- .../scripts/dirac_admin_voms_sync.py | 2 +- .../scripts/dirac_configuration_cli.py | 2 +- .../dirac_configuration_dump_local_cache.py | 2 +- src/DIRAC/Core/Utilities/DIRACScript.py | 8 +- src/DIRAC/Core/scripts/dirac_configure.py | 798 +++++++++--------- .../scripts/dirac_externals_requirements.py | 2 +- src/DIRAC/Core/scripts/dirac_info.py | 17 +- src/DIRAC/Core/scripts/dirac_install_db.py | 2 +- .../Core/scripts/dirac_install_web_portal.py | 2 +- src/DIRAC/Core/scripts/dirac_setup_site.py | 2 +- .../scripts/dirac_admin_allow_se.py | 2 +- .../scripts/dirac_admin_ban_se.py | 2 +- .../scripts/dirac_admin_user_quota.py | 2 +- .../scripts/dirac_dms_add_file.py | 2 +- .../scripts/dirac_dms_catalog_metadata.py | 2 +- .../dirac_dms_change_replica_status.py | 2 +- .../scripts/dirac_dms_clean_directory.py | 2 +- .../dirac_dms_create_archive_request.py | 2 +- .../dirac_dms_create_moving_request.py | 2 +- .../scripts/dirac_dms_data_size.py | 2 +- .../scripts/dirac_dms_directory_sync.py | 2 +- .../scripts/dirac_dms_filecatalog_cli.py | 2 +- .../scripts/dirac_dms_find_lfns.py | 2 +- .../scripts/dirac_dms_move_replica_request.py | 2 +- .../dirac_dms_put_and_register_request.py | 2 +- .../scripts/dirac_dms_remove_catalog_files.py | 2 +- .../dirac_dms_remove_catalog_replicas.py | 2 +- .../scripts/dirac_dms_remove_files.py | 2 +- .../scripts/dirac_dms_remove_replicas.py | 2 +- .../scripts/dirac_dms_replica_metadata.py | 2 +- ...irac_dms_replicate_and_register_request.py | 2 +- .../scripts/dirac_dms_resolve_guid.py | 2 +- .../scripts/dirac_dms_set_replica_status.py | 2 +- .../scripts/dirac_dms_show_se_status.py | 2 +- .../scripts/dirac_dms_user_lfns.py | 2 +- .../scripts/dirac_dms_user_quota.py | 2 +- .../FrameworkSystem/Client/ProxyGeneration.py | 2 +- .../FrameworkSystem/Client/ProxyUpload.py | 2 +- .../scripts/dirac_admin_get_CAs.py | 2 +- .../scripts/dirac_admin_proxy_upload.py | 2 +- .../scripts/dirac_admin_sysadmin_cli.py | 2 +- .../scripts/dirac_admin_update_instance.py | 2 +- .../scripts/dirac_proxy_info.py | 2 +- tests/CI/docker-compose.yml | 2 +- 54 files changed, 531 insertions(+), 481 deletions(-) create mode 100644 docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py diff --git a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py new file mode 100644 index 00000000000..fbc39881f24 --- /dev/null +++ b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py @@ -0,0 +1,89 @@ +#!/usr/bin/env python +""" +This script prints out how great is it, shows raw queries and sets the +number of pings. + +Usage: + dirac-my-great-script [options] + +Arguments: + [ ...] +""" +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +__RCSID__ = '$Id$' + +from DIRAC import S_OK, S_ERROR, gLogger, exit as DIRACExit +from DIRAC.Core.Utilities.DIRACScript import DIRACScript + + + +class Params(object): + ''' + Class holding the parameters raw and pingsToDo, and callbacks for their + respective switches. + ''' + + def __init__(self): + self.raw = False + self.pingsToDo = 1 + + # Registers all switches that can be used while calling the script. + self.switches = [ + ('', 'text=', 'Text to be printed'), + ('u', 'upper', 'Print text on upper case'), + # Some of the switches have associated a callback, defined on Params class. + ('r', 'showRaw', 'Show raw result from the query', self.setRawResult), + ('p:', 'numPings=', 'Number of pings to do (by default 1)', self.setNumOfPingsToDo) + ] + + def setRawResult(self, value): + self.raw = True + return S_OK() + + def setNumOfPingsToDo(self, value): + try: + self.pingsToDo = max(1, int(value)) + except ValueError: + return S_ERROR("Number of pings to do has to be a number") + return S_OK() + + +# IMPORTANT: Make sure to add the console-scripts entry to setup.cfg as well! +@DIRACScript() +def main(self): + ''' + This is the script main method, which will hold all the logic. + ''' + params = Params() + + # Script initialization + self.registerSwitches(params.switches) + + # Parse the command line and initialize DIRAC + unprogressSwitches, args = self.parseCommandLine(ignoreErrors=False) + + # Gets the rest of the + servicesList = args + switches = dict(unprogressSwitches) + + gLogger.info('This is the servicesList %s:' % servicesList) + gLogger.debug("The switches used are:") + map(gLogger.debug, switches.iteritems()) + + # Import the required DIRAC modules + from DIRAC.Interfaces.API.Dirac import Dirac + + # let's do something + if not servicesList: + gLogger.error('No services defined') + DIRACExit(1) + gLogger.notice('We are done') + + DIRACExit(0) + + +if __name__ == "__main__": + main() diff --git a/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py b/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py index 332e06d08d2..a118a941210 100755 --- a/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py +++ b/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py @@ -24,7 +24,7 @@ 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 diff --git a/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py b/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py index 81895a86c86..02a4f20c484 100755 --- a/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py +++ b/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py @@ -15,7 +15,7 @@ __RCSID__ = "$Id$" -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py b/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py index 0b7afc0f75e..3f62afb0222 100755 --- a/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py +++ b/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py @@ -329,11 +329,9 @@ def loadUserData(self): optionPath = self.__getAbsolutePath(optionTuple[0]) if not gConfigurationData.extractOptionFromCFG(optionPath): gConfigurationData.setOptionInCFG(optionPath, optionTuple[1]) - self.__initLogger(self.componentName, self.loggingSection) if not retVal['OK']: return retVal - retVal = self.__checkMandatoryOptions() if not retVal['OK']: return retVal diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py index 19af23fe14f..229671a3a1b 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py @@ -17,7 +17,7 @@ import six -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC import gLogger, exit as DIRACExit from DIRAC.ConfigurationSystem.Client.Utilities import getGridCEs, getSiteUpdates diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py index 53f21c75aec..0f0143aa413 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py @@ -19,7 +19,7 @@ from __future__ import print_function __RCSID__ = "$Id$" -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.ConfigurationSystem.Client.CSAPI import CSAPI from DIRAC import exit as DIRACExit, gLogger diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py index 671fefa55f8..0ecfcdf4f7b 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py @@ -26,7 +26,7 @@ import six -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC import exit as DIRACExit, gLogger from DIRAC.ConfigurationSystem.Client.Helpers.Resources import getDIRACSiteName diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py index bcd38bcad1c..619c1e83e38 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py @@ -21,7 +21,7 @@ __RCSID__ = "$Id$" import DIRAC -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Security.ProxyInfo import getProxyInfo from DIRAC.ConfigurationSystem.Client.Helpers.Registry import getVOForGroup 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 02c8331f522..16edf2064da 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_check_config_options.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_check_config_options.py @@ -24,7 +24,7 @@ from diraccfg import CFG from DIRAC import gLogger, S_ERROR, S_OK, gConfig -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Utilities.List import fromChar diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py index 5efb093e7e5..8f80666ea69 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py @@ -24,7 +24,7 @@ __RCSID__ = "$Id$" from DIRAC import gLogger, exit as DIRACExit -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Security.ProxyInfo import getProxyInfo from DIRAC.ConfigurationSystem.Client.Helpers.Registry import getPropertiesForGroup diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py index e39017c7c4c..0415c0c25cf 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py @@ -15,7 +15,7 @@ import six from DIRAC import gLogger, exit as DIRACExit, S_OK -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.ConfigurationSystem.Client.VOMS2CSSynchronizer import VOMS2CSSynchronizer from DIRAC.Core.Utilities.Proxy import executeWithUserProxy diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py index 3642ecb34db..142d0f114de 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py @@ -12,7 +12,7 @@ __RCSID__ = "$Id$" -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.ConfigurationSystem.Client.CSCLI import CSCLI 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 a9df8801388..b1bd6405c24 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_dump_local_cache.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_dump_local_cache.py @@ -14,7 +14,7 @@ import sys import DIRAC -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/Core/Utilities/DIRACScript.py b/src/DIRAC/Core/Utilities/DIRACScript.py index b76600f6858..9b0dcbb7232 100644 --- a/src/DIRAC/Core/Utilities/DIRACScript.py +++ b/src/DIRAC/Core/Utilities/DIRACScript.py @@ -16,7 +16,7 @@ from DIRAC.Core.Utilities.Extensions import entrypointToExtension, extensionsByPriority -localCfg = LocalConfiguration() +# localCfg = LocalConfiguration() class DIRACScript(object): """Decorator for providing command line executables @@ -27,11 +27,13 @@ class DIRACScript(object): def __init__(self): """ c'tor """ - global localCfg + # global localCfg + self.scriptName = None self.alreadyInitialized = False self.doc = inspect.currentframe().f_back.f_globals['__doc__'] - self.localCfg = localCfg + # self.localCfg = localCfg + self.localCfg = LocalConfiguration() self.localCfg.setUsageMessage(self.doc) self.showHelp = self.localCfg.showHelp diff --git a/src/DIRAC/Core/scripts/dirac_configure.py b/src/DIRAC/Core/scripts/dirac_configure.py index 3ebbdb2470d..6cdbc30daaf 100755 --- a/src/DIRAC/Core/scripts/dirac_configure.py +++ b/src/DIRAC/Core/scripts/dirac_configure.py @@ -76,7 +76,7 @@ import DIRAC from DIRAC.Core.Utilities.File import mkDir -from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Security.ProxyInfo import getProxyInfo from DIRAC.ConfigurationSystem.Client.Helpers import cfgInstallPath, cfgPath, Registry @@ -85,119 +85,117 @@ __RCSID__ = "$Id$" -@DIRACScript() -def main(self): - logLevel = None - setup = None - configurationServer = None - includeAllServers = False - gatewayServer = None - siteName = None - useServerCert = False - skipCAChecks = False - skipCADownload = False - useVersionsDir = False - architecture = None - localSE = None - ceName = None - vo = None - update = False - outputFile = '' - skipVOMSDownload = False - extensions = '' - - - def setGateway(optionValue): - global gatewayServer - gatewayServer = optionValue - setServer(gatewayServer + '/Configuration/Server') - DIRAC.gConfig.setOptionValue(cfgInstallPath('Gateway'), gatewayServer) - return DIRAC.S_OK() - - def setOutput(optionValue): - global outputFile - outputFile = optionValue +class ConfigureInit(object): + + def __init__(self, script): + self.__script = script + self.logLevel = None + self.setup = None + self.configurationServer = None + self.includeAllServers = False + self.gatewayServer = None + self.siteName = None + self.useServerCert = False + self.skipCAChecks = False + self.skipCADownload = False + self.useVersionsDir = False + self.architecture = None + self.localSE = None + self.ceName = None + self.vo = None + self.update = False + self.outputFile = '' + self.skipVOMSDownload = False + self.extensions = '' + self.switches = [ + ("S:", "Setup=", "Set as DIRAC setup", self.setSetup), + ("e:", "Extensions=", "Set as DIRAC extensions", self.setExtensions), + ("C:", "ConfigurationServer=", "Set as DIRAC configuration server", self.setServer), + ("I", "IncludeAllServers", "include all Configuration Servers", self.setAllServers), + ("n:", "SiteName=", "Set as DIRAC Site Name", self.setSiteName), + ("N:", "CEName=", "Determiner from ", self.setCEName), + ("V:", "VO=", "Set the VO name", self.setVO), + ("W:", "gateway=", "Configure as DIRAC Gateway for the site", self.setGateway), + ("U", "UseServerCertificate", "Configure to use Server Certificate", self.setServerCert), + ("H", "SkipCAChecks", "Configure to skip check of CAs", self.setSkipCAChecks), + ("D", "SkipCADownload", "Configure to skip download of CAs", self.setSkipCADownload), + ("M", "SkipVOMSDownload", "Configure to skip download of VOMS info", self.setSkipVOMSDownload), + ("v", "UseVersionsDir", "Use versions directory", self.setUseVersionsDir), + ("A:", "Architecture=", "Configure /Architecture=", self.setArchitecture), + ("L:", "LocalSE=", "Configure LocalSite/LocalSE=", self.setLocalSE), + ("F", "ForceUpdate", + "Force Update of cfg file (i.e. dirac.cfg) (otherwise nothing happens if dirac.cfg already exists)", + self.forceUpdate), + ("O:", "output=", "output configuration file", self.setOutput) + ] + + def setGateway(self, optionValue): + self.gatewayServer = optionValue + self.setServer(self.gatewayServer + '/Configuration/Server') + DIRAC.gConfig.setOptionValue(cfgInstallPath('Gateway'), self.gatewayServer) return DIRAC.S_OK() - - def setServer(optionValue): - global configurationServer - configurationServer = optionValue - DIRAC.gConfig.setOptionValue('/DIRAC/Configuration/Servers', configurationServer) - DIRAC.gConfig.setOptionValue(cfgInstallPath('ConfigurationServer'), configurationServer) + def setOutput(self, optionValue): + self.outputFile = optionValue return DIRAC.S_OK() + def setServer(self, optionValue): + self.configurationServer = optionValue + DIRAC.gConfig.setOptionValue('/DIRAC/Configuration/Servers', self.configurationServer) + DIRAC.gConfig.setOptionValue(cfgInstallPath('ConfigurationServer'), self.configurationServer) + return DIRAC.S_OK() - def setAllServers(optionValue): - global includeAllServers - includeAllServers = True - + def setAllServers(self, optionValue): + self.includeAllServers = True - def setSetup(optionValue): - global setup - setup = optionValue - DIRAC.gConfig.setOptionValue('/DIRAC/Setup', setup) - DIRAC.gConfig.setOptionValue(cfgInstallPath('Setup'), setup) + def setSetup(self, optionValue): + self.setup = optionValue + DIRAC.gConfig.setOptionValue('/DIRAC/Setup', self.setup) + DIRAC.gConfig.setOptionValue(cfgInstallPath('Setup'), self.setup) return DIRAC.S_OK() - - def setSiteName(optionValue): - global siteName - siteName = optionValue - self.localCfg.addDefaultEntry('/LocalSite/Site', siteName) + def setSiteName(self, optionValue): + self.siteName = optionValue + self.__script.localCfg.addDefaultEntry('/LocalSite/Site', self.siteName) DIRAC.__siteName = False - DIRAC.gConfig.setOptionValue(cfgInstallPath('SiteName'), siteName) + DIRAC.gConfig.setOptionValue(cfgInstallPath('SiteName'), self.siteName) return DIRAC.S_OK() - - def setCEName(optionValue): - global ceName - ceName = optionValue - DIRAC.gConfig.setOptionValue(cfgInstallPath('CEName'), ceName) + def setCEName(self, optionValue): + self.ceName = optionValue + DIRAC.gConfig.setOptionValue(cfgInstallPath('CEName'), self.ceName) return DIRAC.S_OK() - - def setServerCert(optionValue): - global useServerCert - useServerCert = True - DIRAC.gConfig.setOptionValue(cfgInstallPath('UseServerCertificate'), useServerCert) + def setServerCert(self, optionValue): + self.useServerCert = True + DIRAC.gConfig.setOptionValue(cfgInstallPath('UseServerCertificate'), self.useServerCert) return DIRAC.S_OK() - - def setSkipCAChecks(optionValue): - global skipCAChecks - skipCAChecks = True - DIRAC.gConfig.setOptionValue(cfgInstallPath('SkipCAChecks'), skipCAChecks) + def setSkipCAChecks(self, optionValue): + self.skipCAChecks = True + DIRAC.gConfig.setOptionValue(cfgInstallPath('SkipCAChecks'), self.skipCAChecks) return DIRAC.S_OK() - - def setSkipCADownload(optionValue): - global skipCADownload - skipCADownload = True - DIRAC.gConfig.setOptionValue(cfgInstallPath('SkipCADownload'), skipCADownload) + def setSkipCADownload(self, optionValue): + self.skipCADownload = True + DIRAC.gConfig.setOptionValue(cfgInstallPath('SkipCADownload'), self.skipCADownload) return DIRAC.S_OK() - - def setSkipVOMSDownload(optionValue): - global skipVOMSDownload - skipVOMSDownload = True - DIRAC.gConfig.setOptionValue(cfgInstallPath('SkipVOMSDownload'), skipVOMSDownload) + def setSkipVOMSDownload(self, optionValue): + self.skipVOMSDownload = True + DIRAC.gConfig.setOptionValue(cfgInstallPath('SkipVOMSDownload'), self.skipVOMSDownload) return DIRAC.S_OK() - - def setUseVersionsDir(optionValue): - global useVersionsDir - useVersionsDir = True - DIRAC.gConfig.setOptionValue(cfgInstallPath('UseVersionsDir'), useVersionsDir) + def setUseVersionsDir(self, optionValue): + self.useVersionsDir = True + DIRAC.gConfig.setOptionValue(cfgInstallPath('UseVersionsDir'), self.useVersionsDir) return DIRAC.S_OK() - - def setArchitecture(optionValue): - global architecture - architecture = optionValue - self.localCfg.addDefaultEntry('/LocalSite/Architecture', architecture) - DIRAC.gConfig.setOptionValue(cfgInstallPath('Architecture'), architecture) + def setArchitecture(self, optionValue): + self.architecture = optionValue + self.__script.localCfg.addDefaultEntry('/LocalSite/Architecture', self.architecture) + DIRAC.gConfig.setOptionValue(cfgInstallPath('Architecture'), self.architecture) return DIRAC.S_OK() @@ -288,351 +286,315 @@ def runConfigurationWizard(params): print_formatted_text(HTML("Cancelled")) sys.exit(1) - - def setVO(optionValue): - global vo - vo = optionValue - self.localCfg.addDefaultEntry('/DIRAC/VirtualOrganization', vo) - DIRAC.gConfig.setOptionValue(cfgInstallPath('VirtualOrganization'), vo) + def setVO(self, optionValue): + self.vo = optionValue + self.__script.localCfg.addDefaultEntry('/DIRAC/VirtualOrganization', self.vo) + DIRAC.gConfig.setOptionValue(cfgInstallPath('VirtualOrganization'), self.vo) return DIRAC.S_OK() - - def forceUpdate(optionValue): - global update - update = True + def forceUpdate(self, optionValue): + self.update = True return DIRAC.S_OK() - - def setExtensions(optionValue): - global extensions - extensions = optionValue - DIRAC.gConfig.setOptionValue('/DIRAC/Extensions', extensions) - DIRAC.gConfig.setOptionValue(cfgInstallPath('Extensions'), extensions) + def setExtensions(self, optionValue): + self.extensions = optionValue + DIRAC.gConfig.setOptionValue('/DIRAC/Extensions', self.extensions) + DIRAC.gConfig.setOptionValue(cfgInstallPath('Extensions'), self.extensions) return DIRAC.S_OK() + + def run(self): + """ Run initialization """ + if not self.logLevel: + self.logLevel = DIRAC.gConfig.getValue(cfgInstallPath('LogLevel'), '') + if self.logLevel: + DIRAC.gLogger.setLevel(self.logLevel) + else: + DIRAC.gConfig.setOptionValue(cfgInstallPath('LogLevel'), self.logLevel) + if not self.gatewayServer: + newGatewayServer = DIRAC.gConfig.getValue(cfgInstallPath('Gateway'), '') + if newGatewayServer: + self.setGateway(newGatewayServer) + if not self.configurationServer: + newConfigurationServer = DIRAC.gConfig.getValue(cfgInstallPath('ConfigurationServer'), '') + if newConfigurationServer: + self.setServer(newConfigurationServer) + if not self.includeAllServers: + newIncludeAllServer = DIRAC.gConfig.getValue(cfgInstallPath('IncludeAllServers'), False) + if newIncludeAllServer: + self.setAllServers(True) + if not self.setup: + newSetup = DIRAC.gConfig.getValue(cfgInstallPath('Setup'), '') + if newSetup: + self.setSetup(newSetup) + if not self.siteName: + newSiteName = DIRAC.gConfig.getValue(cfgInstallPath('SiteName'), '') + if newSiteName: + self.setSiteName(newSiteName) + if not self.ceName: + newCEName = DIRAC.gConfig.getValue(cfgInstallPath('CEName'), '') + if newCEName: + self.setCEName(newCEName) + if not self.useServerCert: + newUserServerCert = DIRAC.gConfig.getValue(cfgInstallPath('UseServerCertificate'), False) + if newUserServerCert: + self.setServerCert(newUserServerCert) + if not self.skipCAChecks: + newSkipCAChecks = DIRAC.gConfig.getValue(cfgInstallPath('SkipCAChecks'), False) + if newSkipCAChecks: + self.setSkipCAChecks(newSkipCAChecks) + if not self.skipCADownload: + newSkipCADownload = DIRAC.gConfig.getValue(cfgInstallPath('SkipCADownload'), False) + if newSkipCADownload: + self.setSkipCADownload(newSkipCADownload) + if not self.useVersionsDir: + newUseVersionsDir = DIRAC.gConfig.getValue(cfgInstallPath('UseVersionsDir'), False) + if newUseVersionsDir: + self.setUseVersionsDir(newUseVersionsDir) + # Set proper Defaults in configuration (even if they will be properly overwrite by gComponentInstaller + instancePath = os.path.dirname(os.path.dirname(DIRAC.rootPath)) + rootPath = os.path.join(instancePath, 'pro') + DIRAC.gConfig.setOptionValue(cfgInstallPath('InstancePath'), instancePath) + DIRAC.gConfig.setOptionValue(cfgInstallPath('RootPath'), rootPath) + if not self.architecture: + newArchitecture = DIRAC.gConfig.getValue(cfgInstallPath('Architecture'), '') + if newArchitecture: + self.setArchitecture(newArchitecture) + if not self.vo: + newVO = DIRAC.gConfig.getValue(cfgInstallPath('VirtualOrganization'), '') + if newVO: + setVO(newVO) + if not self.extensions: + newExtensions = DIRAC.gConfig.getValue(cfgInstallPath('Extensions'), '') + if newExtensions: + setExtensions(newExtensions) + + DIRAC.gLogger.notice('Executing: %s ' % (' '.join(sys.argv))) + DIRAC.gLogger.notice('Checking DIRAC installation at "%s"' % DIRAC.rootPath) + + if self.update: + if self.outputFile: + DIRAC.gLogger.notice('Will update the output file %s' % self.outputFile) + else: + DIRAC.gLogger.notice('Will update %s' % DIRAC.gConfig.diracConfigFilePath) + + if self.setup: + DIRAC.gLogger.verbose('/DIRAC/Setup =', self.setup) + if self.vo: + DIRAC.gLogger.verbose('/DIRAC/VirtualOrganization =', self.vo) + if self.configurationServer: + DIRAC.gLogger.verbose('/DIRAC/Configuration/Servers =', self.configurationServer) + + if self.siteName: + DIRAC.gLogger.verbose('/LocalSite/Site =', self.siteName) + if self.architecture: + DIRAC.gLogger.verbose('/LocalSite/Architecture =', self.architecture) + if self.localSE: + DIRAC.gLogger.verbose('/LocalSite/localSE =', self.localSE) + + if not self.useServerCert: + DIRAC.gLogger.verbose('/DIRAC/Security/UseServerCertificate =', 'no') + # Being sure it was not there before + self.__script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + self.__script.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'no') + else: + DIRAC.gLogger.verbose('/DIRAC/Security/UseServerCertificate =', 'yes') + # Being sure it was not there before + self.__script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + self.__script.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') - self.disableCS() - - self.registerSwitch("S:", "Setup=", "Set as DIRAC setup", setSetup) - self.registerSwitch("e:", "Extensions=", "Set as DIRAC extensions", setExtensions) - self.registerSwitch("C:", "ConfigurationServer=", "Set as DIRAC configuration server", setServer) - self.registerSwitch("I", "IncludeAllServers", "include all Configuration Servers", setAllServers) - self.registerSwitch("n:", "SiteName=", "Set as DIRAC Site Name", setSiteName) - self.registerSwitch("N:", "CEName=", "Determiner from ", setCEName) - self.registerSwitch("V:", "VO=", "Set the VO name", setVO) - - self.registerSwitch("W:", "gateway=", "Configure as DIRAC Gateway for the site", setGateway) - - self.registerSwitch("U", "UseServerCertificate", "Configure to use Server Certificate", setServerCert) - self.registerSwitch("H", "SkipCAChecks", "Configure to skip check of CAs", setSkipCAChecks) - self.registerSwitch("D", "SkipCADownload", "Configure to skip download of CAs", setSkipCADownload) - self.registerSwitch("M", "SkipVOMSDownload", "Configure to skip download of VOMS info", setSkipVOMSDownload) - - self.registerSwitch("v", "UseVersionsDir", "Use versions directory", setUseVersionsDir) - - self.registerSwitch("A:", "Architecture=", "Configure /Architecture=", setArchitecture) - self.registerSwitch("L:", "LocalSE=", "Configure LocalSite/LocalSE=", setLocalSE) - - self.registerSwitch( - "F", - "ForceUpdate", - "Force Update of cfg file (i.e. dirac.cfg) (otherwise nothing happens if dirac.cfg already exists)", - params.forceUpdate) - - self.registerSwitch("O:", "output=", "output configuration file", setOutput) - - self.parseCommandLine(ignoreErrors=True) - args = self.getExtraCLICFGFiles() + host = DIRAC.gConfig.getValue(cfgInstallPath("Host"), "") + if host: + DIRAC.gConfig.setOptionValue(cfgPath("DIRAC", "Hostname"), host) - if not params.logLevel: - params.logLevel = DIRAC.gConfig.getValue(cfgInstallPath('LogLevel'), '') - if params.logLevel: - DIRAC.gLogger.setLevel(params.logLevel) - else: - DIRAC.gConfig.setOptionValue(cfgInstallPath('LogLevel'), params.logLevel) - - if not params.gatewayServer: - newGatewayServer = DIRAC.gConfig.getValue(cfgInstallPath('Gateway'), '') - if newGatewayServer: - params.setGateway(newGatewayServer) - - if not params.configurationServer: - newConfigurationServer = DIRAC.gConfig.getValue(cfgInstallPath('ConfigurationServer'), '') - if newConfigurationServer: - params.setServer(newConfigurationServer) - - if not params.includeAllServers: - newIncludeAllServer = DIRAC.gConfig.getValue(cfgInstallPath('IncludeAllServers'), False) - if newIncludeAllServer: - params.setAllServers(True) - - if not params.setup: - newSetup = DIRAC.gConfig.getValue(cfgInstallPath('Setup'), '') - if newSetup: - params.setSetup(newSetup) - - if not params.siteName: - newSiteName = DIRAC.gConfig.getValue(cfgInstallPath('SiteName'), '') - if newSiteName: - params.setSiteName(newSiteName) - - if not params.ceName: - newCEName = DIRAC.gConfig.getValue(cfgInstallPath('CEName'), '') - if newCEName: - params.setCEName(newCEName) - - if not params.useServerCert: - newUserServerCert = DIRAC.gConfig.getValue(cfgInstallPath('UseServerCertificate'), False) - if newUserServerCert: - params.setServerCert(newUserServerCert) - - if not params.skipCAChecks: - newSkipCAChecks = DIRAC.gConfig.getValue(cfgInstallPath('SkipCAChecks'), False) - if newSkipCAChecks: - params.setSkipCAChecks(newSkipCAChecks) - - if not params.skipCADownload: - newSkipCADownload = DIRAC.gConfig.getValue(cfgInstallPath('SkipCADownload'), False) - if newSkipCADownload: - params.setSkipCADownload(newSkipCADownload) - - if not params.useVersionsDir: - newUseVersionsDir = DIRAC.gConfig.getValue(cfgInstallPath('UseVersionsDir'), False) - if newUseVersionsDir: - params.setUseVersionsDir(newUseVersionsDir) - # Set proper Defaults in configuration (even if they will be properly overwrite by gComponentInstaller - instancePath = os.path.dirname(os.path.dirname(DIRAC.rootPath)) - rootPath = os.path.join(instancePath, 'pro') - DIRAC.gConfig.setOptionValue(cfgInstallPath('InstancePath'), instancePath) - DIRAC.gConfig.setOptionValue(cfgInstallPath('RootPath'), rootPath) - - if not params.architecture: - newArchitecture = DIRAC.gConfig.getValue(cfgInstallPath('Architecture'), '') - if newArchitecture: - params.setArchitecture(newArchitecture) - - if not params.vo: - newVO = DIRAC.gConfig.getValue(cfgInstallPath('VirtualOrganization'), '') - if newVO: - params.setVO(newVO) - - if not params.extensions: - newExtensions = DIRAC.gConfig.getValue(cfgInstallPath('Extensions'), '') - if newExtensions: - params.setExtensions(newExtensions) - - DIRAC.gLogger.notice('Executing: %s ' % (' '.join(sys.argv))) - DIRAC.gLogger.notice('Checking DIRAC installation at "%s"' % DIRAC.rootPath) - - if params.update: - if params.outputFile: - DIRAC.gLogger.notice('Will update the output file %s' % params.outputFile) - else: - DIRAC.gLogger.notice('Will update %s' % DIRAC.gConfig.diracConfigFilePath) - - if params.setup: - DIRAC.gLogger.verbose('/DIRAC/Setup =', params.setup) - if params.vo: - DIRAC.gLogger.verbose('/DIRAC/VirtualOrganization =', params.vo) - if params.configurationServer: - DIRAC.gLogger.verbose('/DIRAC/Configuration/Servers =', params.configurationServer) - - if params.siteName: - DIRAC.gLogger.verbose('/LocalSite/Site =', params.siteName) - if params.architecture: - DIRAC.gLogger.verbose('/LocalSite/Architecture =', params.architecture) - if params.localSE: - DIRAC.gLogger.verbose('/LocalSite/localSE =', params.localSE) - - if not params.useServerCert: - DIRAC.gLogger.verbose('/DIRAC/Security/UseServerCertificate =', 'no') - # Being sure it was not there before - self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') - self.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'no') - else: - DIRAC.gLogger.verbose('/DIRAC/Security/UseServerCertificate =', 'yes') - # Being sure it was not there before - self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') - self.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') - - host = DIRAC.gConfig.getValue(cfgInstallPath("Host"), "") - if host: - DIRAC.gConfig.setOptionValue(cfgPath("DIRAC", "Hostname"), host) - - if params.skipCAChecks: - DIRAC.gLogger.verbose('/DIRAC/Security/SkipCAChecks =', 'yes') - # Being sure it was not there before - self.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') - self.localCfg.addDefaultEntry('/DIRAC/Security/SkipCAChecks', 'yes') - else: - # Necessary to allow initial download of CA's - if not params.skipCADownload: - DIRAC.gConfig.setOptionValue('/DIRAC/Security/SkipCAChecks', 'yes') - if not skipCADownload: - self.enableCS() - try: - dirName = os.path.join(DIRAC.rootPath, 'etc', 'grid-security', 'certificates') - mkDir(dirName) - except Exception: - DIRAC.gLogger.exception() - DIRAC.gLogger.fatal('Fail to create directory:', dirName) - DIRAC.exit(-1) - try: - bdc = BundleDeliveryClient() - result = bdc.syncCAs() - if result['OK']: - result = bdc.syncCRLs() - except Exception as e: - DIRAC.gLogger.error('Failed to sync CAs and CRLs: %s' % str(e)) - - if not skipCAChecks: - self.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') - - if params.ceName or params.siteName: - # This is used in the pilot context, we should have a proxy, or a certificate, and access to CS - if params.useServerCert: + if self.skipCAChecks: + DIRAC.gLogger.verbose('/DIRAC/Security/SkipCAChecks =', 'yes') # Being sure it was not there before - self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') - self.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') - self.enableCS() - # Get the site resource section - gridSections = DIRAC.gConfig.getSections('/Resources/Sites/') - if not gridSections['OK']: - DIRAC.gLogger.warn('Could not get grid sections list') - grids = [] + self.__script.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') + self.__script.localCfg.addDefaultEntry('/DIRAC/Security/SkipCAChecks', 'yes') else: - grids = gridSections['Value'] - # try to get siteName from ceName or Local SE from siteName using Remote Configuration - for grid in grids: - siteSections = DIRAC.gConfig.getSections('/Resources/Sites/%s/' % grid) - if not siteSections['OK']: - DIRAC.gLogger.warn('Could not get %s site list' % grid) - sites = [] + # Necessary to allow initial download of CA's + if not self.skipCADownload: + DIRAC.gConfig.setOptionValue('/DIRAC/Security/SkipCAChecks', 'yes') + if not self.skipCADownload: + self.__script.enableCS() + try: + dirName = os.path.join(DIRAC.rootPath, 'etc', 'grid-security', 'certificates') + mkDir(dirName) + except BaseException: + DIRAC.gLogger.exception() + DIRAC.gLogger.fatal('Fail to create directory:', dirName) + DIRAC.exit(-1) + try: + bdc = BundleDeliveryClient() + result = bdc.syncCAs() + if result['OK']: + result = bdc.syncCRLs() + except Exception as e: + DIRAC.gLogger.error('Failed to sync CAs and CRLs: %s' % str(e)) + + if not self.skipCAChecks: + self.__script.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') + + if self.ceName or self.siteName: + # This is used in the pilot context, we should have a proxy, or a certificate, and access to CS + if self.useServerCert: + # Being sure it was not there before + self.__script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + self.__script.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') + self.__script.enableCS() + # Get the site resource section + gridSections = DIRAC.gConfig.getSections('/Resources/Sites/') + if not gridSections['OK']: + DIRAC.gLogger.warn('Could not get grid sections list') + grids = [] else: - sites = siteSections['Value'] - - if not params.siteName: - if params.ceName: - for site in sites: - res = DIRAC.gConfig.getSections('/Resources/Sites/%s/%s/CEs/' % (grid, site), []) - if not res['OK']: - DIRAC.gLogger.warn('Could not get %s CEs list' % site) - if params.ceName in res['Value']: - params.siteName = site - break - if siteName: - DIRAC.gLogger.notice('Setting /LocalSite/Site = %s' % siteName) - self.localCfg.addDefaultEntry('/LocalSite/Site', siteName) - DIRAC.__siteName = False - if ceName: - DIRAC.gLogger.notice('Setting /LocalSite/GridCE = %s' % ceName) - self.localCfg.addDefaultEntry('/LocalSite/GridCE', ceName) - - if not localSE and siteName in sites: - localSE = getSEsForSite(siteName) - if localSE['OK'] and localSE['Value']: - localSE = ','.join(localSE['Value']) - DIRAC.gLogger.notice('Setting /LocalSite/LocalSE =', localSE) - self.localCfg.addDefaultEntry('/LocalSite/LocalSE', localSE) - break - - if gatewayServer: - DIRAC.gLogger.verbose('/DIRAC/Gateways/%s =' % DIRAC.siteName(), gatewayServer) - self.localCfg.addDefaultEntry('/DIRAC/Gateways/%s' % DIRAC.siteName(), gatewayServer) - - # Create the local cfg if it is not yet there - if not params.outputFile: - params.outputFile = DIRAC.gConfig.diracConfigFilePath - params.outputFile = os.path.abspath(params.outputFile) - if not os.path.exists(params.outputFile): - configDir = os.path.dirname(params.outputFile) - mkDir(configDir) - params.update = True - DIRAC.gConfig.dumpLocalCFGToFile(params.outputFile) - - if params.includeAllServers: - # We need user proxy or server certificate to continue in order to get all the CS URLs - if not useServerCert: - self.enableCS() - result = getProxyInfo() - if not result['OK']: - DIRAC.gLogger.notice('Configuration is not completed because no user proxy is available') - DIRAC.gLogger.notice('Create one using dirac-proxy-init and execute again with -F option') - sys.exit(1) - else: - self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + grids = gridSections['Value'] + # try to get siteName from ceName or Local SE from siteName using Remote Configuration + for grid in grids: + siteSections = DIRAC.gConfig.getSections('/Resources/Sites/%s/' % grid) + if not siteSections['OK']: + DIRAC.gLogger.warn('Could not get %s site list' % grid) + sites = [] + else: + sites = siteSections['Value'] + + if not self.siteName: + if self.ceName: + for site in sites: + res = DIRAC.gConfig.getSections('/Resources/Sites/%s/%s/CEs/' % (grid, site), []) + if not res['OK']: + DIRAC.gLogger.warn('Could not get %s CEs list' % site) + if self.ceName in res['Value']: + self.siteName = site + break + if self.siteName: + DIRAC.gLogger.notice('Setting /LocalSite/Site = %s' % self.siteName) + self.__script.localCfg.addDefaultEntry('/LocalSite/Site', self.siteName) + DIRAC.__siteName = False + if self.ceName: + DIRAC.gLogger.notice('Setting /LocalSite/GridCE = %s' % self.ceName) + self.__script.localCfg.addDefaultEntry('/LocalSite/GridCE', self.ceName) + + if not self.localSE and self.siteName in sites: + self.localSE = getSEsForSite(self.siteName) + if self.localSE['OK'] and self.localSE['Value']: + self.localSE = ','.join(self.localSE['Value']) + DIRAC.gLogger.notice('Setting /LocalSite/LocalSE =', self.localSE) + self.__script.localCfg.addDefaultEntry('/LocalSite/LocalSE', self.localSE) + break + + if self.gatewayServer: + DIRAC.gLogger.verbose('/DIRAC/Gateways/%s =' % DIRAC.siteName(), self.gatewayServer) + self.__script.localCfg.addDefaultEntry('/DIRAC/Gateways/%s' % DIRAC.siteName(), self.gatewayServer) + + # Create the local cfg if it is not yet there + if not self.outputFile: + self.outputFile = DIRAC.gConfig.diracConfigFilePath + self.outputFile = os.path.abspath(self.outputFile) + if not os.path.exists(self.outputFile): + configDir = os.path.dirname(self.outputFile) + mkDir(configDir) + self.update = True + DIRAC.gConfig.dumpLocalCFGToFile(self.outputFile) + + if self.includeAllServers: + # We need user proxy or server certificate to continue in order to get all the CS URLs + if not self.useServerCert: + self.__script.enableCS() + result = getProxyInfo() + if not result['OK']: + DIRAC.gLogger.notice('Configuration is not completed because no user proxy is available') + DIRAC.gLogger.notice('Create one using dirac-proxy-init and execute again with -F option') + sys.exit(1) + else: + self.__script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + # When using Server Certs CA's will be checked, the flag only disables initial download + # this will be replaced by the use of SkipCADownload + self.__script.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') + self.__script.enableCS() + + DIRAC.gConfig.setOptionValue('/DIRAC/Configuration/Servers', ','.join(DIRAC.gConfig.getServersList())) + DIRAC.gLogger.verbose('/DIRAC/Configuration/Servers =', ','.join(DIRAC.gConfig.getServersList())) + + if self.useServerCert: + # always removing before dumping + self.__script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + self.__script.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') + self.__script.localCfg.deleteOption('/DIRAC/Security/SkipVOMSDownload') + + if self.update: + DIRAC.gConfig.dumpLocalCFGToFile(self.outputFile) + + # ## LAST PART: do the vomsdir/vomses magic + + # This has to be done for all VOs in the installation + + if self.skipVOMSDownload: + # We stop here + sys.exit(0) + + result = Registry.getVOMSServerInfo() + if not result['OK']: + sys.exit(1) + + error = '' + vomsDict = result['Value'] + for vo in vomsDict: + voName = vomsDict[vo]['VOMSName'] + vomsDirPath = os.path.join(DIRAC.rootPath, 'etc', 'grid-security', 'vomsdir', voName) + vomsesDirPath = os.path.join(DIRAC.rootPath, 'etc', 'grid-security', 'vomses') + for path in (vomsDirPath, vomsesDirPath): + mkDir(path) + vomsesLines = [] + for vomsHost in vomsDict[vo].get('Servers', {}): + hostFilePath = os.path.join(vomsDirPath, "%s.lsc" % vomsHost) + try: + DN = vomsDict[vo]['Servers'][vomsHost]['DN'] + CA = vomsDict[vo]['Servers'][vomsHost]['CA'] + port = vomsDict[vo]['Servers'][vomsHost]['Port'] + if not DN or not CA or not port: + DIRAC.gLogger.error('DN = %s' % DN) + DIRAC.gLogger.error('CA = %s' % CA) + DIRAC.gLogger.error('Port = %s' % port) + DIRAC.gLogger.error('Missing Parameter for %s' % vomsHost) + continue + with open(hostFilePath, "wt") as fd: + fd.write("%s\n%s\n" % (DN, CA)) + vomsesLines.append('"%s" "%s" "%s" "%s" "%s" "24"' % (voName, vomsHost, port, DN, voName)) + DIRAC.gLogger.notice("Created vomsdir file %s" % hostFilePath) + except Exception: + DIRAC.gLogger.exception("Could not generate vomsdir file for host", vomsHost) + error = "Could not generate vomsdir file for VO %s, host %s" % (voName, vomsHost) + try: + vomsesFilePath = os.path.join(vomsesDirPath, voName) + with open(vomsesFilePath, "wt") as fd: + fd.write("%s\n" % "\n".join(vomsesLines)) + DIRAC.gLogger.notice("Created vomses file %s" % vomsesFilePath) + except Exception: + DIRAC.gLogger.exception("Could not generate vomses file") + error = "Could not generate vomses file for VO %s" % voName + + if self.useServerCert: + self.__script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') # When using Server Certs CA's will be checked, the flag only disables initial download # this will be replaced by the use of SkipCADownload - self.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') - self.enableCS() - - DIRAC.gConfig.setOptionValue('/DIRAC/Configuration/Servers', ','.join(DIRAC.gConfig.getServersList())) - DIRAC.gLogger.verbose('/DIRAC/Configuration/Servers =', ','.join(DIRAC.gConfig.getServersList())) + self.__script.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') - if params.useServerCert: - # always removing before dumping - self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') - self.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') - self.localCfg.deleteOption('/DIRAC/Security/SkipVOMSDownload') + if error: + sys.exit(1) - if params.update: - DIRAC.gConfig.dumpLocalCFGToFile(params.outputFile) + sys.exit(0) - # ## LAST PART: do the vomsdir/vomses magic - # This has to be done for all VOs in the installation - - if params.skipVOMSDownload: - return - - result = Registry.getVOMSServerInfo() - if not result['OK']: - sys.exit(1) +@DIRACScript() +def main(self): + self.disableCS() - error = '' - vomsDict = result['Value'] - for vo in vomsDict: - voName = vomsDict[vo]['VOMSName'] - vomsDirPath = os.path.join(DIRAC.rootPath, 'etc', 'grid-security', 'vomsdir', voName) - vomsesDirPath = os.path.join(DIRAC.rootPath, 'etc', 'grid-security', 'vomses') - for path in (vomsDirPath, vomsesDirPath): - mkDir(path) - vomsesLines = [] - for vomsHost in vomsDict[vo].get('Servers', {}): - hostFilePath = os.path.join(vomsDirPath, "%s.lsc" % vomsHost) - try: - DN = vomsDict[vo]['Servers'][vomsHost]['DN'] - CA = vomsDict[vo]['Servers'][vomsHost]['CA'] - port = vomsDict[vo]['Servers'][vomsHost]['Port'] - if not DN or not CA or not port: - DIRAC.gLogger.error('DN = %s' % DN) - DIRAC.gLogger.error('CA = %s' % CA) - DIRAC.gLogger.error('Port = %s' % port) - DIRAC.gLogger.error('Missing Parameter for %s' % vomsHost) - continue - with open(hostFilePath, "wt") as fd: - fd.write("%s\n%s\n" % (DN, CA)) - vomsesLines.append('"%s" "%s" "%s" "%s" "%s" "24"' % (voName, vomsHost, port, DN, voName)) - DIRAC.gLogger.notice("Created vomsdir file %s" % hostFilePath) - except Exception: - DIRAC.gLogger.exception("Could not generate vomsdir file for host", vomsHost) - error = "Could not generate vomsdir file for VO %s, host %s" % (voName, vomsHost) - try: - vomsesFilePath = os.path.join(vomsesDirPath, voName) - with open(vomsesFilePath, "wt") as fd: - fd.write("%s\n" % "\n".join(vomsesLines)) - DIRAC.gLogger.notice("Created vomses file %s" % vomsesFilePath) - except Exception: - DIRAC.gLogger.exception("Could not generate vomses file") - error = "Could not generate vomses file for VO %s" % voName - - if useServerCert: - self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') - # When using Server Certs CA's will be checked, the flag only disables initial download - # this will be replaced by the use of SkipCADownload - self.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') - - if error: - sys.exit(1) + confInit = ConfigureInit(self) + self.registerSwitches(confInit.switches) + self.parseCommandLine(ignoreErrors=True) + + confInit.run() if __name__ == "__main__": diff --git a/src/DIRAC/Core/scripts/dirac_externals_requirements.py b/src/DIRAC/Core/scripts/dirac_externals_requirements.py index e63e78aa4f4..867ac4fa4d6 100755 --- a/src/DIRAC/Core/scripts/dirac_externals_requirements.py +++ b/src/DIRAC/Core/scripts/dirac_externals_requirements.py @@ -23,7 +23,7 @@ import subprocess as commands from diraccfg import CFG -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC import gLogger, rootPath, S_OK diff --git a/src/DIRAC/Core/scripts/dirac_info.py b/src/DIRAC/Core/scripts/dirac_info.py index ffece589fb5..a788cc28e67 100755 --- a/src/DIRAC/Core/scripts/dirac_info.py +++ b/src/DIRAC/Core/scripts/dirac_info.py @@ -30,20 +30,19 @@ __RCSID__ = "$Id$" +import os + +import DIRAC +from DIRAC import gConfig + +from DIRAC.Core.Security.ProxyInfo import getProxyInfo +from DIRAC.ConfigurationSystem.Client.Helpers.Registry import getVOForGroup +from DIRAC.Core.Utilities.PrettyPrint import printTable from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): - import os - - import DIRAC - from DIRAC import gConfig - # from DIRAC.Core.Base import Script - from DIRAC.Core.Security.ProxyInfo import getProxyInfo - from DIRAC.ConfigurationSystem.Client.Helpers.Registry import getVOForGroup - from DIRAC.Core.Utilities.PrettyPrint import printTable - def version(arg): self.disableCS() print(DIRAC.version) diff --git a/src/DIRAC/Core/scripts/dirac_install_db.py b/src/DIRAC/Core/scripts/dirac_install_db.py index 08dc6a9a72c..3f762bfedc2 100755 --- a/src/DIRAC/Core/scripts/dirac_install_db.py +++ b/src/DIRAC/Core/scripts/dirac_install_db.py @@ -15,7 +15,7 @@ __RCSID__ = "$Id$" -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/Core/scripts/dirac_install_web_portal.py b/src/DIRAC/Core/scripts/dirac_install_web_portal.py index 11d8e6ea38f..d0bf7663714 100755 --- a/src/DIRAC/Core/scripts/dirac_install_web_portal.py +++ b/src/DIRAC/Core/scripts/dirac_install_web_portal.py @@ -12,7 +12,7 @@ __RCSID__ = "$Id$" -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/Core/scripts/dirac_setup_site.py b/src/DIRAC/Core/scripts/dirac_setup_site.py index a30f3a50c17..8a0e0c9d62d 100755 --- a/src/DIRAC/Core/scripts/dirac_setup_site.py +++ b/src/DIRAC/Core/scripts/dirac_setup_site.py @@ -18,7 +18,7 @@ __RCSID__ = "$Id$" from DIRAC import S_OK -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py index 3b85209aef6..293627765fd 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py @@ -14,7 +14,7 @@ __RCSID__ = "$Id$" import DIRAC -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py index 951aaa7749a..5422a6d0e3f 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py @@ -15,7 +15,7 @@ __RCSID__ = "$Id$" import DIRAC -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py index 4bbf8c633a8..5e578646638 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py @@ -22,7 +22,7 @@ __RCSID__ = "$Id$" import DIRAC -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py index 46556a30b46..9bea4793319 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py @@ -40,7 +40,7 @@ import os from DIRAC import S_OK -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript overwrite = False diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py index b81af03c3a7..b7452da493e 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py @@ -18,7 +18,7 @@ __RCSID__ = "$Id$" from DIRAC import exit as DIRACExit -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript 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 876f04120dc..e043c1462c6 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_change_replica_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_change_replica_status.py @@ -12,7 +12,7 @@ __RCSID__ = "$Id$" from DIRAC import exit as DIRACExit -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py index 692115f9df5..15ab3b9e3cf 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py @@ -20,7 +20,7 @@ import os from DIRAC import exit as DIRACExit, gLogger -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript 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 479536556d5..ad06116943b 100644 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_archive_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_archive_request.py @@ -41,7 +41,7 @@ from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations from DIRAC.Core.Utilities import DEncode from DIRAC.Core.Utilities.ReturnValues import returnSingleResult -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.FrameworkSystem.private.standardLogging.LogLevels import LogLevels from DIRAC.RequestManagementSystem.Client.File import File 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 f745b1690d6..41f9456f31a 100644 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_moving_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_moving_request.py @@ -15,7 +15,7 @@ import DIRAC from DIRAC import gLogger -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Utilities.List import breakListIntoChunks from DIRAC.Core.Utilities.ReturnValues import returnSingleResult diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py index 4d1927ba096..00d1bfc3bad 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py @@ -22,7 +22,7 @@ import os import DIRAC from DIRAC import gLogger -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py index de990d660c5..82d6086d72e 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py @@ -30,7 +30,7 @@ import os import DIRAC -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript __RCSID__ = "$Id$" diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py index 9222e5018ab..81c8b604a53 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py @@ -29,7 +29,7 @@ import sys -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py index 53b99172473..49a30ca00db 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py @@ -21,7 +21,7 @@ @DIRACScript() def main(self): - # from DIRAC.Core.Base import Script + self.registerSwitch('', 'Path=', ' Path to search for') self.registerSwitch('', 'SE=', ' (comma-separated list of) SEs/SE-groups to be searched') 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 f02453329ab..05a4324b3e0 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_move_replica_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_move_replica_request.py @@ -20,7 +20,7 @@ import time from hashlib import md5 -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript 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 76c00edd9bc..d8840dd7b92 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 @@ -22,7 +22,7 @@ import os -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript 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 d5a07323260..a4534292bba 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_files.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_files.py @@ -18,7 +18,7 @@ __RCSID__ = "$Id$" -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC import exit as dexit from DIRAC import gLogger 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 4ca5c7b9574..54fbc28c871 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_replicas.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_replicas.py @@ -16,7 +16,7 @@ import os from DIRAC import exit as dexit -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC import gLogger diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py index ec1ba9c0683..60adb2bb494 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py @@ -14,7 +14,7 @@ __RCSID__ = "$Id$" -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py index eca13003da6..c8831831aa1 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py @@ -17,7 +17,7 @@ __RCSID__ = "$Id$" from DIRAC import exit as DIRACExit -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py index 727a9513a7f..b513fbfef41 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py @@ -14,7 +14,7 @@ import os from DIRAC import exit as DIRACExit -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript 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 c4cdfd70579..915c6b1a2fe 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 @@ -15,7 +15,7 @@ from __future__ import print_function __RCSID__ = "$Id$" import os -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC import gLogger import DIRAC diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py index 7b1dcd8d6c4..3c4022f3a78 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py @@ -11,7 +11,7 @@ __RCSID__ = "$Id$" -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript 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 def5d5384e4..f88418eb9fc 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_set_replica_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_set_replica_status.py @@ -17,7 +17,7 @@ __RCSID__ = "$Id$" -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript 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 f44199a8d3c..0ae7f24276a 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_show_se_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_show_se_status.py @@ -20,7 +20,7 @@ from __future__ import division from DIRAC import S_OK, exit as DIRACexit -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript __RCSID__ = "$Id$" diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py index b53f2c5163f..5876232d235 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py @@ -21,7 +21,7 @@ __RCSID__ = "$Id$" -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py index f89b6ab289a..3e2b1a46ed4 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py @@ -15,7 +15,7 @@ __RCSID__ = "$Id$" -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/FrameworkSystem/Client/ProxyGeneration.py b/src/DIRAC/FrameworkSystem/Client/ProxyGeneration.py index 11aba2c8269..2a25c245c85 100644 --- a/src/DIRAC/FrameworkSystem/Client/ProxyGeneration.py +++ b/src/DIRAC/FrameworkSystem/Client/ProxyGeneration.py @@ -9,7 +9,7 @@ import sys from prompt_toolkit import prompt from DIRAC import S_OK, S_ERROR, gLogger -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.NTP import getClockDeviation __RCSID__ = "$Id$" diff --git a/src/DIRAC/FrameworkSystem/Client/ProxyUpload.py b/src/DIRAC/FrameworkSystem/Client/ProxyUpload.py index 7b8b143fbce..2aeee8c777b 100644 --- a/src/DIRAC/FrameworkSystem/Client/ProxyUpload.py +++ b/src/DIRAC/FrameworkSystem/Client/ProxyUpload.py @@ -11,7 +11,7 @@ import DIRAC from DIRAC import gLogger -# from DIRAC.Core.Base import Script + __RCSID__ = "$Id$" diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py index 99ae56d6d49..4ec9e8ef887 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py @@ -17,7 +17,7 @@ from __future__ import print_function import DIRAC -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.FrameworkSystem.Client.BundleDeliveryClient import BundleDeliveryClient diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py index bde7df70822..9ed2e00c71f 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py @@ -17,7 +17,7 @@ import sys -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.FrameworkSystem.Client.ProxyUpload import CLIParams, uploadProxy diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py index c439c6cd129..927f4c9a385 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py @@ -13,7 +13,7 @@ __RCSID__ = "$Id$" -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py index 87136d46ac9..3cc7d6d2ba1 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py @@ -17,7 +17,7 @@ from io import open import DIRAC -# from DIRAC.Core.Base import Script + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py index a0cdabf8edd..c29025ee9b4 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py @@ -79,7 +79,7 @@ def setManagerInfo(self, arg): def main(self): params = Params() - # from DIRAC.Core.Base import Script + self.registerSwitch("f:", "file=", "File to use as user key", params.setProxyLocation) self.registerSwitch("i", "version", "Print version", params.showVersion) self.registerSwitch("n", "novoms", "Disable VOMS", params.disableVOMS) diff --git a/tests/CI/docker-compose.yml b/tests/CI/docker-compose.yml index c722e3448e0..f08061a684e 100644 --- a/tests/CI/docker-compose.yml +++ b/tests/CI/docker-compose.yml @@ -32,7 +32,7 @@ services: test: ["CMD", "curl", "-f", "http://localhost:9200"] interval: 5s timeout: 2s - retries: 15 + retries: 20 # Mock of an S3 storage s3-direct: From 5b331d0fea117ca3ea47754bbe9c51849dac4e0d Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Mon, 15 Mar 2021 00:27:19 +0100 Subject: [PATCH 04/43] fix --- src/DIRAC/Core/scripts/dirac_configure.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/DIRAC/Core/scripts/dirac_configure.py b/src/DIRAC/Core/scripts/dirac_configure.py index 6cdbc30daaf..b636b9a7d3a 100755 --- a/src/DIRAC/Core/scripts/dirac_configure.py +++ b/src/DIRAC/Core/scripts/dirac_configure.py @@ -76,7 +76,6 @@ import DIRAC from DIRAC.Core.Utilities.File import mkDir - from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Security.ProxyInfo import getProxyInfo from DIRAC.ConfigurationSystem.Client.Helpers import cfgInstallPath, cfgPath, Registry From b7e54744b5f8a7bfc0aaeb810796efdc2132934b Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Mon, 15 Mar 2021 01:54:11 +0100 Subject: [PATCH 05/43] fix pylint --- .../dirac-my-great-script.py | 6 +- .../DevelopingCommands/dirac_ping_info.py | 2 +- .../scripts/dirac_accounting_decode_fileid.py | 2 +- .../scripts/dirac_admin_accounting_cli.py | 2 +- .../Client/LocalConfiguration.py | 4 - .../scripts/dirac_admin_add_resources.py | 2 +- .../scripts/dirac_admin_add_shifter.py | 2 +- .../scripts/dirac_admin_add_site.py | 2 +- .../scripts/dirac_admin_bdii_info.py | 2 +- .../dirac_admin_check_config_options.py | 4 +- .../scripts/dirac_admin_sort_cs_sites.py | 2 +- .../scripts/dirac_admin_voms_sync.py | 2 +- .../scripts/dirac_configuration_cli.py | 2 +- .../dirac_configuration_dump_local_cache.py | 2 +- .../scripts/dirac_configuration_shell.py | 2 +- src/DIRAC/Core/Utilities/DIRACScript.py | 4 - src/DIRAC/Core/scripts/dirac_agent.py | 2 +- src/DIRAC/Core/scripts/dirac_configure.py | 10 +-- src/DIRAC/Core/scripts/dirac_executor.py | 2 +- .../scripts/dirac_externals_requirements.py | 2 +- src/DIRAC/Core/scripts/dirac_info.py | 2 +- src/DIRAC/Core/scripts/dirac_install_db.py | 2 +- .../Core/scripts/dirac_install_web_portal.py | 2 +- src/DIRAC/Core/scripts/dirac_service.py | 2 +- src/DIRAC/Core/scripts/dirac_setup_site.py | 2 +- src/DIRAC/Core/scripts/dirac_version.py | 2 +- .../scripts/dirac_admin_allow_se.py | 2 +- .../scripts/dirac_admin_ban_se.py | 2 +- .../scripts/dirac_admin_user_quota.py | 2 +- .../scripts/dirac_dms_add_file.py | 2 +- .../scripts/dirac_dms_catalog_metadata.py | 2 +- .../dirac_dms_change_replica_status.py | 2 +- .../scripts/dirac_dms_clean_directory.py | 2 +- .../dirac_dms_create_archive_request.py | 21 ++--- .../dirac_dms_create_moving_request.py | 2 +- .../dirac_dms_create_removal_request.py | 2 +- .../scripts/dirac_dms_data_size.py | 2 +- .../scripts/dirac_dms_directory_sync.py | 2 +- .../scripts/dirac_dms_filecatalog_cli.py | 2 +- .../scripts/dirac_dms_find_lfns.py | 4 +- .../scripts/dirac_dms_move_replica_request.py | 2 +- .../dirac_dms_put_and_register_request.py | 2 +- .../scripts/dirac_dms_remove_catalog_files.py | 2 +- .../dirac_dms_remove_catalog_replicas.py | 2 +- .../scripts/dirac_dms_remove_files.py | 2 +- .../scripts/dirac_dms_remove_replicas.py | 2 +- .../scripts/dirac_dms_replica_metadata.py | 2 +- ...irac_dms_replicate_and_register_request.py | 2 +- .../scripts/dirac_dms_resolve_guid.py | 2 +- .../scripts/dirac_dms_set_replica_status.py | 2 +- .../scripts/dirac_dms_show_se_status.py | 2 +- .../scripts/dirac_dms_user_lfns.py | 2 +- .../scripts/dirac_dms_user_quota.py | 2 +- .../scripts/dirac_admin_get_CAs.py | 2 +- .../scripts/dirac_admin_get_proxy.py | 2 +- .../scripts/dirac_admin_proxy_upload.py | 2 +- .../scripts/dirac_admin_sysadmin_cli.py | 2 +- .../scripts/dirac_admin_update_pilot.py | 2 +- .../scripts/dirac_admin_users_with_proxy.py | 5 +- .../scripts/dirac_install_component.py | 2 +- .../scripts/dirac_install_tornado_service.py | 2 +- .../dirac_monitoring_get_components_status.py | 2 +- .../scripts/dirac_myproxy_upload.py | 2 +- .../scripts/dirac_populate_component_db.py | 2 +- .../scripts/dirac_proxy_destroy.py | 2 +- .../scripts/dirac_proxy_get_uploaded_info.py | 2 +- .../scripts/dirac_proxy_info.py | 4 +- .../scripts/dirac_proxy_init.py | 2 +- .../scripts/dirac_restart_component.py | 2 +- .../scripts/dirac_start_component.py | 2 +- .../scripts/dirac_status_component.py | 2 +- .../scripts/dirac_stop_component.py | 2 +- .../scripts/dirac_sys_sendmail.py | 2 +- .../scripts/dirac_uninstall_component.py | 2 +- .../scripts/dirac_admin_add_group.py | 55 ++++++------ .../scripts/dirac_admin_add_host.py | 71 +++++++--------- .../scripts/dirac_admin_add_user.py | 85 +++++++++---------- .../scripts/dirac_admin_allow_site.py | 3 +- .../scripts/dirac_admin_ban_site.py | 3 +- .../Interfaces/scripts/dirac_admin_ce_info.py | 3 +- .../scripts/dirac_admin_delete_user.py | 3 +- .../scripts/dirac_admin_get_banned_sites.py | 3 +- .../dirac_admin_get_job_pilot_output.py | 3 +- .../scripts/dirac_admin_get_job_pilots.py | 3 +- .../scripts/dirac_admin_get_pilot_info.py | 19 +++-- .../dirac_admin_get_pilot_logging_info.py | 2 +- .../scripts/dirac_admin_get_pilot_output.py | 3 +- .../scripts/dirac_admin_get_site_mask.py | 3 +- .../scripts/dirac_admin_list_hosts.py | 3 +- .../scripts/dirac_admin_list_users.py | 3 +- .../scripts/dirac_admin_modify_user.py | 3 +- .../scripts/dirac_admin_pilot_summary.py | 3 +- .../scripts/dirac_admin_reset_job.py | 3 +- .../scripts/dirac_admin_service_ports.py | 3 +- .../scripts/dirac_admin_set_site_protocols.py | 3 +- .../scripts/dirac_admin_site_info.py | 3 +- .../scripts/dirac_admin_site_mask_logging.py | 3 +- .../dirac_admin_sync_users_from_file.py | 3 +- .../Interfaces/scripts/dirac_dms_get_file.py | 3 +- .../scripts/dirac_dms_lfn_accessURL.py | 3 +- .../scripts/dirac_dms_lfn_metadata.py | 3 +- .../scripts/dirac_dms_lfn_replicas.py | 3 +- .../scripts/dirac_dms_pfn_accessURL.py | 3 +- .../scripts/dirac_dms_pfn_metadata.py | 3 +- .../scripts/dirac_dms_replicate_lfn.py | 3 +- .../scripts/dirac_framework_ping_service.py | 3 +- .../scripts/dirac_framework_self_ping.py | 2 +- .../Interfaces/scripts/dirac_repo_monitor.py | 3 +- .../scripts/dirac_utils_file_adler.py | 3 +- .../scripts/dirac_utils_file_md5.py | 3 +- .../dirac_wms_get_normalized_queue_length.py | 3 +- .../dirac_wms_get_queue_normalization.py | 3 +- .../scripts/dirac_wms_job_attributes.py | 3 +- .../scripts/dirac_wms_job_delete.py | 3 +- .../scripts/dirac_wms_job_get_input.py | 3 +- .../scripts/dirac_wms_job_get_jdl.py | 3 +- .../scripts/dirac_wms_job_get_output.py | 3 +- .../scripts/dirac_wms_job_get_output_data.py | 3 +- .../Interfaces/scripts/dirac_wms_job_kill.py | 3 +- .../scripts/dirac_wms_job_logging_info.py | 3 +- .../scripts/dirac_wms_job_parameters.py | 3 +- .../Interfaces/scripts/dirac_wms_job_peek.py | 3 +- .../scripts/dirac_wms_job_reschedule.py | 3 +- .../scripts/dirac_wms_job_status.py | 3 +- .../scripts/dirac_wms_job_submit.py | 3 +- .../dirac_wms_jobs_select_output_search.py | 3 +- .../scripts/dirac_wms_select_jobs.py | 3 +- .../scripts/dirac_prod_add_trans.py | 2 +- .../scripts/dirac_prod_clean.py | 2 +- .../scripts/dirac_prod_delete.py | 2 +- .../scripts/dirac_prod_get.py | 2 +- .../scripts/dirac_prod_get_all.py | 2 +- .../scripts/dirac_prod_get_description.py | 2 +- .../scripts/dirac_prod_get_trans.py | 2 +- .../scripts/dirac_prod_start.py | 2 +- .../scripts/dirac_prod_stop.py | 2 +- .../scripts/dirac_rms_list_req_cache.py | 2 +- .../scripts/dirac_rms_reqdb_summary.py | 2 +- .../scripts/dirac_rms_request.py | 2 +- .../scripts/dirac_rss_list_status.py | 2 +- .../scripts/dirac_rss_query_db.py | 2 +- .../scripts/dirac_rss_query_dtcache.py | 2 +- .../scripts/dirac_rss_set_status.py | 2 +- .../scripts/dirac_rss_set_token.py | 2 +- .../scripts/dirac_rss_sync.py | 2 +- .../scripts/dirac_resource_get_parameters.py | 2 +- .../Resources/scripts/dirac_resource_info.py | 2 +- .../scripts/dirac_stager_monitor_file.py | 2 +- .../scripts/dirac_stager_monitor_jobs.py | 2 +- .../scripts/dirac_stager_monitor_request.py | 2 +- .../scripts/dirac_stager_monitor_requests.py | 4 +- .../scripts/dirac_stager_show_stats.py | 2 +- .../scripts/dirac_stager_stage_files.py | 2 +- .../scripts/dirac_production_runjoblocal.py | 2 +- .../scripts/dirac_transformation_add_files.py | 2 +- .../scripts/dirac_transformation_archive.py | 2 +- .../scripts/dirac_transformation_clean.py | 2 +- .../scripts/dirac_transformation_cli.py | 2 +- .../scripts/dirac_transformation_get_files.py | 2 +- .../dirac_transformation_recover_data.py | 12 +-- .../dirac_transformation_remove_output.py | 2 +- .../dirac_transformation_replication.py | 2 +- .../dirac_transformation_verify_outputdata.py | 2 +- .../scripts/dirac_admin_kill_pilot.py | 2 +- .../scripts/dirac_admin_pilot_logging_info.py | 2 +- .../scripts/dirac_admin_show_task_queues.py | 2 +- .../scripts/dirac_admin_sync_pilot.py | 2 +- .../scripts/dirac_jobexec.py | 2 +- .../scripts/dirac_wms_cpu_normalization.py | 2 +- .../scripts/dirac_wms_get_queue_cpu_time.py | 2 +- .../scripts/dirac_wms_get_wn.py | 2 +- .../scripts/dirac_wms_get_wn_parameters.py | 2 +- .../scripts/dirac_wms_match.py | 2 +- .../scripts/dirac_wms_pilot_job_info.py | 2 +- 174 files changed, 299 insertions(+), 374 deletions(-) diff --git a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py index fbc39881f24..d925f2ae666 100644 --- a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py +++ b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py @@ -53,12 +53,12 @@ def setNumOfPingsToDo(self, value): # IMPORTANT: Make sure to add the console-scripts entry to setup.cfg as well! @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter ''' This is the script main method, which will hold all the logic. ''' params = Params() - + # Script initialization self.registerSwitches(params.switches) @@ -69,7 +69,7 @@ def main(self): servicesList = args switches = dict(unprogressSwitches) - gLogger.info('This is the servicesList %s:' % servicesList) + gLogger.info('This is the servicesList %s:' % servicesList) gLogger.debug("The switches used are:") map(gLogger.debug, switches.iteritems()) diff --git a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_ping_info.py b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_ping_info.py index 0363c684a1f..fe4fe5aa8be 100644 --- a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_ping_info.py +++ b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_ping_info.py @@ -39,7 +39,7 @@ def setNumOfPingsToDo(self, value): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter # Instantiate the params class cliParams = Params() diff --git a/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py b/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py index a118a941210..fa948cd5aca 100755 --- a/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py +++ b/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py @@ -29,7 +29,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter from DIRAC.Core.Utilities.Plotting.FileCoding import extractRequestFromFileId self.parseCommandLine() diff --git a/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py b/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py index 02a4f20c484..fe6faa9e663 100755 --- a/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py +++ b/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.localCfg.addDefaultEntry("LogLevel", "info") self.parseCommandLine() diff --git a/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py b/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py index 3f62afb0222..1782fa9c422 100755 --- a/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py +++ b/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py @@ -457,10 +457,8 @@ def __addUserDataToConfiguration(self): if not self.isParsed: self.__parseCommandLine() - ######################### gConfigurationData.loadFile errorsList = self.__loadCFGFiles() - ######################### gRefresher.forceRefresh if gConfigurationData.getServers(): retVal = self.syncRemoteConfiguration() if not retVal['OK']: @@ -468,7 +466,6 @@ def __addUserDataToConfiguration(self): else: gLogger.warn("Running without remote configuration") - ######################### set currentSectionPath try: if self.componentType == "service": self.__setDefaultSection(getServiceSection(self.componentName)) @@ -489,7 +486,6 @@ def __addUserDataToConfiguration(self): except Exception as e: errorsList.append(str(e)) - ############################# get unprocessedSwitches self.unprocessedSwitches = [] for optionName, optionValue in self.parsedOptionList: diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py index 229671a3a1b..30de7e4328e 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py @@ -257,7 +257,7 @@ def handler(signum, frame): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter signal.signal(signal.SIGTERM, handler) signal.signal(signal.SIGINT, handler) diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py index 0f0143aa413..90b71a12d75 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py @@ -26,7 +26,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py index 0ecfcdf4f7b..45f3a1d54d3 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py @@ -34,7 +34,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py index 619c1e83e38..0d4ef86742a 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py @@ -134,7 +134,7 @@ def showInfo(result, info): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter # Script initialization registerSwitches(self) # registerUsageMessage() 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 16edf2064da..86ff78bc113 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_check_config_options.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_check_config_options.py @@ -202,11 +202,11 @@ def run(self): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter checkConfig = CheckConfig() self.registerSwitches(checkConfig.switches) self.parseCommandLine(ignoreErrors=True) - + if not checkConfig.run()['OK']: self.showHelp() diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py index 8f80666ea69..e8eadc4db3c 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py @@ -55,7 +55,7 @@ def country(arg): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch( "C", "country", diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py index 0415c0c25cf..f0d18183484 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py @@ -39,7 +39,7 @@ def setVO(value): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("V:", "vo=", "VO name", setVO) self.registerSwitch("D", "dryRun", "Dry run", setDryRun) self.parseCommandLine(ignoreErrors=True) diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py index 142d0f114de..c588eb9ee66 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py @@ -18,7 +18,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.localCfg.addDefaultEntry("LogLevel", "fatal") self.parseCommandLine() 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 b1bd6405c24..214a26a2861 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_dump_local_cache.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_dump_local_cache.py @@ -19,7 +19,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.localCfg.addDefaultEntry("LogLevel", "fatal") fileName = "" diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_shell.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_shell.py index 7829825e884..aebe1b5b7fe 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_shell.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_shell.py @@ -17,7 +17,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine() from DIRAC.ConfigurationSystem.Client.CSShellCLI import CSShellCLI shell = CSShellCLI() diff --git a/src/DIRAC/Core/Utilities/DIRACScript.py b/src/DIRAC/Core/Utilities/DIRACScript.py index 9b0dcbb7232..59851b1a19a 100644 --- a/src/DIRAC/Core/Utilities/DIRACScript.py +++ b/src/DIRAC/Core/Utilities/DIRACScript.py @@ -16,7 +16,6 @@ from DIRAC.Core.Utilities.Extensions import entrypointToExtension, extensionsByPriority -# localCfg = LocalConfiguration() class DIRACScript(object): """Decorator for providing command line executables @@ -27,12 +26,9 @@ class DIRACScript(object): def __init__(self): """ c'tor """ - # global localCfg - self.scriptName = None self.alreadyInitialized = False self.doc = inspect.currentframe().f_back.f_globals['__doc__'] - # self.localCfg = localCfg self.localCfg = LocalConfiguration() self.localCfg.setUsageMessage(self.doc) self.showHelp = self.localCfg.showHelp diff --git a/src/DIRAC/Core/scripts/dirac_agent.py b/src/DIRAC/Core/scripts/dirac_agent.py index 4ea8d5a0f23..f0b0002beb7 100755 --- a/src/DIRAC/Core/scripts/dirac_agent.py +++ b/src/DIRAC/Core/scripts/dirac_agent.py @@ -22,7 +22,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter positionalArgs = self.localCfg.getPositionalArguments() if len(positionalArgs) == 0: gLogger.fatal("You must specify which agent to run!") diff --git a/src/DIRAC/Core/scripts/dirac_configure.py b/src/DIRAC/Core/scripts/dirac_configure.py index b636b9a7d3a..5f7dbe8bf2b 100755 --- a/src/DIRAC/Core/scripts/dirac_configure.py +++ b/src/DIRAC/Core/scripts/dirac_configure.py @@ -300,7 +300,7 @@ def setExtensions(self, optionValue): DIRAC.gConfig.setOptionValue('/DIRAC/Extensions', self.extensions) DIRAC.gConfig.setOptionValue(cfgInstallPath('Extensions'), self.extensions) return DIRAC.S_OK() - + def run(self): """ Run initialization """ if not self.logLevel: @@ -361,11 +361,11 @@ def run(self): if not self.vo: newVO = DIRAC.gConfig.getValue(cfgInstallPath('VirtualOrganization'), '') if newVO: - setVO(newVO) + self.setVO(newVO) if not self.extensions: newExtensions = DIRAC.gConfig.getValue(cfgInstallPath('Extensions'), '') if newExtensions: - setExtensions(newExtensions) + self.setExtensions(newExtensions) DIRAC.gLogger.notice('Executing: %s ' % (' '.join(sys.argv))) DIRAC.gLogger.notice('Checking DIRAC installation at "%s"' % DIRAC.rootPath) @@ -586,13 +586,13 @@ def run(self): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.disableCS() confInit = ConfigureInit(self) self.registerSwitches(confInit.switches) self.parseCommandLine(ignoreErrors=True) - + confInit.run() diff --git a/src/DIRAC/Core/scripts/dirac_executor.py b/src/DIRAC/Core/scripts/dirac_executor.py index 848af5f5654..535d14197ea 100755 --- a/src/DIRAC/Core/scripts/dirac_executor.py +++ b/src/DIRAC/Core/scripts/dirac_executor.py @@ -22,7 +22,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter positionalArgs = self.localCfg.getPositionalArguments() if len(positionalArgs) == 0: gLogger.fatal("You must specify which executor to run!") diff --git a/src/DIRAC/Core/scripts/dirac_externals_requirements.py b/src/DIRAC/Core/scripts/dirac_externals_requirements.py index 867ac4fa4d6..886b6d02475 100755 --- a/src/DIRAC/Core/scripts/dirac_externals_requirements.py +++ b/src/DIRAC/Core/scripts/dirac_externals_requirements.py @@ -47,7 +47,7 @@ def pipInstall(package, switches=""): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.disableCS() self.registerSwitch("t:", "type=", "Installation type. 'server' by default.", setInstallType) diff --git a/src/DIRAC/Core/scripts/dirac_info.py b/src/DIRAC/Core/scripts/dirac_info.py index a788cc28e67..2ca8c9e4b4d 100755 --- a/src/DIRAC/Core/scripts/dirac_info.py +++ b/src/DIRAC/Core/scripts/dirac_info.py @@ -42,7 +42,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter def version(arg): self.disableCS() print(DIRAC.version) diff --git a/src/DIRAC/Core/scripts/dirac_install_db.py b/src/DIRAC/Core/scripts/dirac_install_db.py index 3f762bfedc2..c2408e3c534 100755 --- a/src/DIRAC/Core/scripts/dirac_install_db.py +++ b/src/DIRAC/Core/scripts/dirac_install_db.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine() args = self.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 d0bf7663714..3fed78022b9 100755 --- a/src/DIRAC/Core/scripts/dirac_install_web_portal.py +++ b/src/DIRAC/Core/scripts/dirac_install_web_portal.py @@ -17,7 +17,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.disableCS() self.parseCommandLine() diff --git a/src/DIRAC/Core/scripts/dirac_service.py b/src/DIRAC/Core/scripts/dirac_service.py index e42535d29db..84c1de6c489 100755 --- a/src/DIRAC/Core/scripts/dirac_service.py +++ b/src/DIRAC/Core/scripts/dirac_service.py @@ -25,7 +25,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter positionalArgs = self.localCfg.getPositionalArguments() if len(positionalArgs) == 0: gLogger.fatal("You must specify which server to run!") diff --git a/src/DIRAC/Core/scripts/dirac_setup_site.py b/src/DIRAC/Core/scripts/dirac_setup_site.py index 8a0e0c9d62d..8f2a603f93b 100755 --- a/src/DIRAC/Core/scripts/dirac_setup_site.py +++ b/src/DIRAC/Core/scripts/dirac_setup_site.py @@ -33,7 +33,7 @@ def setExitOnError(self, value): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter cliParams = Params() self.disableCS() diff --git a/src/DIRAC/Core/scripts/dirac_version.py b/src/DIRAC/Core/scripts/dirac_version.py index 5766e5abd29..9132080a339 100755 --- a/src/DIRAC/Core/scripts/dirac_version.py +++ b/src/DIRAC/Core/scripts/dirac_version.py @@ -26,7 +26,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter parser = argparse.ArgumentParser( description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter, diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py index 293627765fd..1778f2b3b32 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py @@ -19,7 +19,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter read = False write = False check = False diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py index 5422a6d0e3f..373a33967ef 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter read = True write = True check = True diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py index 5e578646638..627418dcf06 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py @@ -27,7 +27,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine() users = self.getPositionalArgs() diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py index 9bea4793319..2e05fca30f3 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py @@ -68,7 +68,7 @@ def getDict(item_list): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global overwrite self.registerSwitch("f", "force", "Force overwrite of existing file", setOverwrite) self.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 b7452da493e..c08a2834565 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 e043c1462c6..c6f38a16bbf 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_change_replica_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_change_replica_status.py @@ -17,7 +17,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 15ab3b9e3cf..d7833ed2967 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py @@ -25,7 +25,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine() args = self.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 ad06116943b..57fb7cc400c 100644 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_archive_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_archive_request.py @@ -59,6 +59,7 @@ class CreateArchiveRequest(object): def __init__(self, script): """Constructor.""" + self.__script = script self._fcClient = None self._reqClient = None self.switches = {} @@ -86,7 +87,7 @@ def __init__(self, script): ('', 'SourceOnly', 'Only treat files that are already at the Source-SE'), ('X', 'Execute', 'Put Requests, else dryrun'), ] - self.registerSwitchesAndParseCommandLine(script) + self.registerSwitchesAndParseCommandLine() self.switches['MaxSize'] = int(self.switches.setdefault('MaxSize', MAX_SIZE)) self.switches['MaxFiles'] = int(self.switches.setdefault('MaxFiles', MAX_FILES)) @@ -137,7 +138,7 @@ def lfnFolderPath(self): """Return the lfn folder path where to find the files of the request.""" return self.switches.get('Path', None) - def registerSwitchesAndParseCommandLine(self, script): + def registerSwitchesAndParseCommandLine(self): """Register the default plus additional parameters and parse options. :param list options: list of three tuple for options to add to the script @@ -145,13 +146,13 @@ def registerSwitchesAndParseCommandLine(self, script): :param str opName """ for short, longOption, doc in self.options: - script.registerSwitch(short + ':' if short else '', longOption + '=', doc) + self.__script.registerSwitch(short + ':' if short else '', longOption + '=', doc) for short, longOption, doc in self.flags: - script.registerSwitch(short, longOption, doc) - script.switches[longOption] = False - script.parseCommandLine() - if script.getPositionalArgs(): - script.showHelp(exitCode=1) + self.__script.registerSwitch(short, longOption, doc) + self.switches[longOption] = False + self.__script.parseCommandLine() + if self.__script.getPositionalArgs(): + self.__script.showHelp(exitCode=1) ops = Operations() if not ops.getValue('DataManagement/ArchiveFiles/Enabled', False): @@ -168,7 +169,7 @@ def registerSwitchesAndParseCommandLine(self, script): sLog.verbose('Found default value in the CS for %r with value %r' % (longOption, defaultValue)) self.switches[longOption] = defaultValue - for switch in script.getUnprocessedSwitches(): + for switch in self.__script.getUnprocessedSwitches(): for short, longOption, doc in self.options: if switch[0] == short or switch[0].lower() == longOption.lower(): sLog.verbose('Found switch %r with value %r' % (longOption, switch[1])) @@ -513,7 +514,7 @@ def _replicateSourceFiles(self, request, lfns): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter try: CAR = CreateArchiveRequest(self) CAR.run() 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 41f9456f31a..8d253214d4b 100644 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_moving_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_moving_request.py @@ -284,7 +284,7 @@ def putOrRunRequests(self): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter try: CMR = CreateMovingRequest(self) CMR.run() 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 53febf2bc4c..a4f6d441ca4 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_removal_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_removal_request.py @@ -24,7 +24,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=False) args = self.getPositionalArgs() diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py index 00d1bfc3bad..6b265826cc7 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py @@ -27,7 +27,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter unit = 'GB' self.registerSwitch("u:", "Unit=", " Unit to use [default %s] (MB,GB,TB,PB)" % unit) diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py index 82d6086d72e..667a30e7b24 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py @@ -37,7 +37,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("D", "sync", "Make target directory identical to source") self.registerSwitch("j:", "parallel=", "Multithreaded download and upload") self.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 81c8b604a53..59e7c977642 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py @@ -34,7 +34,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter fcType = 'FileCatalog' self.registerSwitch("f:", "file-catalog=", " Catalog client type to use (default %s)" % fcType) self.parseCommandLine(ignoreErrors=False) diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py index 49a30ca00db..5bc039dcea0 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py @@ -20,9 +20,7 @@ from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): - - +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch('', 'Path=', ' Path to search for') self.registerSwitch('', 'SE=', ' (comma-separated list of) SEs/SE-groups to be searched') self.parseCommandLine(ignoreErrors=True) 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 05a4324b3e0..e3e1cdbd8f7 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_move_replica_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_move_replica_request.py @@ -35,7 +35,7 @@ def getLFNList(arg): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter # from DIRAC.Core.Base.Script import parseCommandLine self.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 d8840dd7b92..36c4ab695bc 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 @@ -27,7 +27,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter # from DIRAC.Core.Base.Script import parseCommandLine self.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 a4534292bba..658d2a71104 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_files.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_files.py @@ -25,7 +25,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 54fbc28c871..1a324bac3b4 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_replicas.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_replicas.py @@ -22,7 +22,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 60adb2bb494..8d1e230c66d 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py @@ -19,7 +19,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 c8831831aa1..bf47af13cc6 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py @@ -22,7 +22,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 b513fbfef41..91fc5687eef 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py @@ -19,7 +19,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 915c6b1a2fe..c5cb9b8bf22 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 @@ -32,7 +32,7 @@ def getLFNList(arg): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter catalog = None self.registerSwitch("C:", "Catalog=", "Catalog to use") self.parseCommandLine() diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py index 3c4022f3a78..f5c00fbc4ec 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py @@ -16,7 +16,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 f88418eb9fc..a9ef5d30076 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_set_replica_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_set_replica_status.py @@ -22,7 +22,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 0ae7f24276a..4330bb9b4a5 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_show_se_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_show_se_status.py @@ -54,7 +54,7 @@ def setNoVO(arg): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global vo global noVOFlag global allVOsFlag diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py index 5876232d235..4a2c8629a22 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py @@ -26,7 +26,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter days = 0 months = 0 years = 0 diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py index 3e2b1a46ed4..a49ff076b2a 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 4ec9e8ef887..2cec23d3402 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py @@ -25,7 +25,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.addDefaultOptionValue('/DIRAC/Security/SkipCAChecks', 'yes') self.parseCommandLine(ignoreErrors=True) diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py index 76c0a543f91..dee70700e6c 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py @@ -108,7 +108,7 @@ def setVOMSAttr(self, arg): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter params = Params() self.registerSwitches(params.switches) diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py index 9ed2e00c71f..f4706e611fb 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter cliParams = CLIParams() self.registerSwitches(cliParams.proxyUploadSwitches) diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py index 927f4c9a385..eef502d21cc 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py @@ -18,7 +18,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter host = None self.registerSwitch("H:", "host=", " Target host") self.parseCommandLine(ignoreErrors=False) diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py index 0be04411f45..3a25ebc5745 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 9568b8c5ccc..2e39f8c6770 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_users_with_proxy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_users_with_proxy.py @@ -25,7 +25,6 @@ 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 @@ -51,9 +50,9 @@ def setProxyLifeTime(self, arg): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter params = Params() - self.registerCLISwitch(("v:", "valid=", "Required HH:MM for the users", prams.setProxyLifeTime)) + self.registerSwitch(("v:", "valid=", "Required HH:MM for the users", params.setProxyLifeTime)) self.parseCommandLine(ignoreErrors=True) args = self.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 c5afedae6ff..d6624e471af 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py @@ -49,7 +49,7 @@ def setSpecialOption(optVal): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global overwrite global specialOptions global module diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py b/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py index 918fe44e371..9212ad36e8c 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py @@ -54,7 +54,7 @@ def setSpecialOption(optVal): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global overwrite global specialOptions global module diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_monitoring_get_components_status.py b/src/DIRAC/FrameworkSystem/scripts/dirac_monitoring_get_components_status.py index 58644e8525c..d1dc3541450 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_monitoring_get_components_status.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_monitoring_get_components_status.py @@ -11,7 +11,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_myproxy_upload.py b/src/DIRAC/FrameworkSystem/scripts/dirac_myproxy_upload.py index 8dd0e60bd97..8fe8f72d5b7 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_myproxy_upload.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_myproxy_upload.py @@ -35,7 +35,7 @@ def showVersion(self, arg): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter params = Params() self.registerSwitch("f:", "file=", "File to use as proxy", params.setProxyLocation) diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py b/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py index 77935dd75e5..e0ac685be1c 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py @@ -39,7 +39,7 @@ def setExcludedHosts(value): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global excludedHosts self.registerSwitch( "e:", diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py index 3623836dd1f..1a53fe66d58 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py @@ -174,7 +174,7 @@ def run(self): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter try: retval = run(self) DIRAC.exit(retval) 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 d550454fd08..dd986061dd3 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_get_uploaded_info.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_get_uploaded_info.py @@ -47,7 +47,7 @@ def setUser(arg): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global userName self.registerSwitch("u:", "user=", "User to query (by default oneself)", setUser) self.parseCommandLine() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py index c29025ee9b4..43bb4fbacdc 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py @@ -76,10 +76,8 @@ def setManagerInfo(self, arg): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter params = Params() - - self.registerSwitch("f:", "file=", "File to use as user key", params.setProxyLocation) self.registerSwitch("i", "version", "Print version", params.showVersion) self.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 0d2f00df84e..deb295a3988 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py @@ -250,7 +250,7 @@ def doTheMagic(self): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter piParams = Params() self.registerSwitches(piParams.switches) self.disableCS() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py index bf5efd8740c..809c6c25c54 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.disableCS() self.parseCommandLine() args = self.getPositionalArgs() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py index a5abd7e0b40..525ea4d4fe7 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.disableCS() self.parseCommandLine() args = self.getPositionalArgs() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py index b2999102110..8c91b048912 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py @@ -25,7 +25,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.disableCS() self.parseCommandLine() args = self.getPositionalArgs() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py index da7e464a823..084be981665 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py @@ -18,7 +18,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.disableCS() self.parseCommandLine() args = self.getPositionalArgs() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py b/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py index 8a3d1e4e9d4..06be947aa47 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py @@ -36,7 +36,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py index 78f26949cbd..4e9f2b191ec 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py @@ -35,7 +35,7 @@ def setForce(opVal): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global force from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py index b051be18fc1..b9ae6df648f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py @@ -20,53 +20,48 @@ # pylint: disable=wrong-import-position import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript -groupName = None -groupProperties = [] -userNames = [] +class Params(object): + def __init__(self, script): + self.__script = script + self.groupName = None + self.groupProperties = [] + self.userNames = [] -def setGroupName(arg): - global groupName - if groupName or not arg: - self.showHelp(exitCode=1) - groupName = arg - + def setGroupName(self, arg): + if self.groupName or not arg: + self.__script.showHelp(exitCode=1) + self.groupName = arg -def addUserName(arg): - global userNames - if not arg: - self.showHelp(exitCode=1) - if arg not in userNames: - userNames.append(arg) + def addUserName(self, arg): + if not arg: + self.__script.showHelp(exitCode=1) + if arg not in self.userNames: + self.userNames.append(arg) - -def addProperty(arg): - global groupProperties - if not arg: - self.showHelp(exitCode=1) - if arg not in groupProperties: - groupProperties.append(arg) + def addProperty(self, arg): + if not arg: + self.__script.showHelp(exitCode=1) + if arg not in self.groupProperties: + self.groupProperties.append(arg) @DIRACScript() -def main(self): - global groupName - global groupProperties - global userNames - self.registerSwitch('G:', 'GroupName:', 'Name of the Group (Mandatory)', setGroupName) +def main(self): # pylint: disable=no-value-for-parameter + params = Params(self) + self.registerSwitch('G:', 'GroupName:', 'Name of the Group (Mandatory)', params.setGroupName) self.registerSwitch( 'U:', 'UserName:', 'Short Name of user to be added to the Group (Allow Multiple instances or None)', - addUserName) + params.addUserName) self.registerSwitch( 'P:', 'Property:', 'Property to be added to the Group (Allow Multiple instances or None)', - addProperty) + params.addProperty) self.parseCommandLine(ignoreErrors=True) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py index 09baf44921f..eab9f51f72d 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py @@ -18,49 +18,44 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript -hostName = None -hostDN = None -hostProperties = [] - - -def setHostName(arg): - global hostName - if hostName or not arg: - self.showHelp(exitCode=1) - hostName = arg - - -def setHostDN(arg): - global hostDN - if hostDN or not arg: - self.showHelp(exitCode=1) - hostDN = arg - - -def addProperty(arg): - global hostProperties - if not arg: - self.showHelp(exitCode=1) - if arg not in hostProperties: - hostProperties.append(arg) +class Params(object): + + def __init__(self, script): + self.__script = script + self.hostName = None + self.hostDN = None + self.hostProperties = [] + self.switches = [ + ('H:', 'HostName:', 'Name of the Host (Mandatory)', self.setHostName), + ('D:', 'HostDN:', 'DN of the Host Certificate (Mandatory)', self.setHostDN), + ('P:', 'Property:', + 'Property to be added to the Host (Allow Multiple instances or None)', + self.addProperty) + ] + + def setHostName(self, arg): + if self.hostName or not arg: + self.__script.showHelp(exitCode=1) + self.hostName = arg + + def setHostDN(self, arg): + if self.hostDN or not arg: + self.__script.showHelp(exitCode=1) + self.hostDN = arg + + def addProperty(self, arg): + if not arg: + self.__script.showHelp(exitCode=1) + if arg not in self.hostProperties: + self.hostProperties.append(arg) @DIRACScript() -def main(self): - global hostName - global hostDN - global hostProperties - self.registerSwitch('H:', 'HostName:', 'Name of the Host (Mandatory)', setHostName) - self.registerSwitch('D:', 'HostDN:', 'DN of the Host Certificate (Mandatory)', setHostDN) - self.registerSwitch( - 'P:', - 'Property:', - 'Property to be added to the Host (Allow Multiple instances or None)', - addProperty) - +def main(self): # pylint: disable=no-value-for-parameter + params = Params(self) + self.registerSwitches(params.switches) self.parseCommandLine(ignoreErrors=True) if hostName is None or hostDN is None: diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py index 6b6f6adb411..e7ad067b3ab 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py @@ -18,65 +18,58 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript -userName = None -userDN = None -userMail = None -userGroups = [] +class Params(object): -def setUserName(arg): - global userName - if userName or not arg: - self.showHelp(exitCode=1) - userName = arg - - -def setUserDN(arg): - global userDN - if userDN or not arg: - self.showHelp(exitCode=1) - userDN = arg + def __init__(self, script): + self.__script = script + self.userName = None + self.userDN = None + self.userMail = None + self.userGroups = [] + def setUserName(self, arg): + if self.userName or not arg: + self.__script.showHelp(exitCode=1) + self.userName = arg -def setUserMail(arg): - global userMail - if userMail or not arg: - self.showHelp(exitCode=1) - if not arg.find('@') > 0: - self.gLogger.error('Not a valid mail address', arg) - DIRAC.exit(-1) - userMail = arg + def setUserDN(self, arg): + if self.userDN or not arg: + self.__script.showHelp(exitCode=1) + self.userDN = arg + def setUserMail(self, arg): + if self.userMail or not arg: + self.__script.showHelp(exitCode=1) + if not arg.find('@') > 0: + self.gLogger.error('Not a valid mail address', arg) + DIRAC.exit(-1) + self.userMail = arg -def addUserGroup(arg): - global userGroups - if not arg: - self.showHelp(exitCode=1) - if arg not in userGroups: - userGroups.append(arg) + def addUserGroup(self, arg): + if not arg: + self.__script.showHelp(exitCode=1) + if arg not in self.userGroups: + self.userGroups.append(arg) @DIRACScript() -def main(self): - global userName - global userDN - global userMail - global userGroups - self.registerSwitch('N:', 'UserName:', 'Short Name of the User (Mandatory)', setUserName) - self.registerSwitch('D:', 'UserDN:', 'DN of the User Certificate (Mandatory)', setUserDN) - self.registerSwitch('M:', 'UserMail:', 'eMail of the user (Mandatory)', setUserMail) +def main(self): # pylint: disable=no-value-for-parameter + params = Params(self) + self.registerSwitch('N:', 'UserName:', 'Short Name of the User (Mandatory)', params.setUserName) + self.registerSwitch('D:', 'UserDN:', 'DN of the User Certificate (Mandatory)', params.setUserDN) + self.registerSwitch('M:', 'UserMail:', 'eMail of the user (Mandatory)', params.setUserMail) self.registerSwitch( 'G:', 'UserGroup:', 'Name of the Group for the User (Allow Multiple instances or None)', - addUserGroup) + params.addUserGroup) self.parseCommandLine(ignoreErrors=True) - if userName is None or userDN is None or userMail is None: + if params.userName is None or params.userDN is None or params.userMail is None: self.showHelp(exitCode=1) args = self.getPositionalArgs() @@ -86,9 +79,9 @@ def main(self): exitCode = 0 errorList = [] - userProps = {'DN': userDN, 'Email': userMail} - if userGroups: - userProps['Groups'] = userGroups + userProps = {'DN': params.userDN, 'Email': params.userMail} + if params.userGroups: + userProps['Groups'] = params.userGroups for prop in args: pl = prop.split("=") if len(pl) < 2: @@ -100,8 +93,8 @@ def main(self): self.gLogger.info("Setting property %s to %s" % (pName, pValue)) userProps[pName] = pValue - if not diracAdmin.csModifyUser(userName, userProps, createIfNonExistant=True)['OK']: - errorList.append(("add user", "Cannot register user %s" % userName)) + if not diracAdmin.csModifyUser(params.userName, userProps, createIfNonExistant=True)['OK']: + errorList.append(("add user", "Cannot register user %s" % params.userName)) exitCode = 255 else: result = diracAdmin.csCommitChanges() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py b/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py index 800ef33d89f..5901a5a5d1a 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py @@ -24,12 +24,11 @@ import time -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("E:", "email=", "Boolean True/False (True by default)") self.parseCommandLine(ignoreErrors=True) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py b/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py index 3ffdbf3d922..eeda2324c88 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py @@ -24,12 +24,11 @@ import time -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("E:", "email=", "Boolean True/False (True by default)") self.parseCommandLine(ignoreErrors=True) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py b/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py index fa811fd3730..9ffe2921a97 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py @@ -22,12 +22,11 @@ __RCSID__ = "$Id$" from DIRAC import gConfig, gLogger, exit as Dexit -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py b/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py index cf60506b65c..80068a6f471 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py @@ -23,12 +23,11 @@ import six -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.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 c06cd0943b9..0e72ce70971 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_banned_sites.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_banned_sites.py @@ -17,12 +17,11 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 90ac08289f0..a4189a380c1 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 @@ -21,12 +21,11 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.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 8a2db197992..b327ab3ebea 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_job_pilots.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_job_pilots.py @@ -40,12 +40,11 @@ __RCSID__ = "$Id$" # pylint: disable=wrong-import-position -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.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 81aab94c005..43998f32c14 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_info.py @@ -39,21 +39,22 @@ __RCSID__ = "$Id$" # pylint: disable=wrong-import-position -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript -extendedPrint = False +class Params(object): -def setExtendedPrint(_arg): - global extendedPrint - extendedPrint = True + def __init__(self): + self.extendedPrint = False + + def setExtendedPrint(self, _arg): + self.extendedPrint = True @DIRACScript() -def main(self): - global extendedPrint - self.registerSwitch('e', 'extended', 'Get extended printout', setExtendedPrint) +def main(self): # pylint: disable=no-value-for-parameter + params = Params() + self.registerSwitch('e', 'extended', 'Get extended printout', params.setExtendedPrint) self.parseCommandLine(ignoreErrors=True) from DIRAC import exit as DIRACExit @@ -77,7 +78,7 @@ def main(self): exitCode = 2 else: res = result['Value'][gridID] - if extendedPrint: + if params.extendedPrint: tab = '' for key in [ 'PilotJobReference', 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 30cc355cb27..7327099c077 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 @@ -43,7 +43,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.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 40efb3bfb78..ce40ce4f311 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_output.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_output.py @@ -23,12 +23,11 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.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 4bb52bc31ea..118a8417758 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_site_mask.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_site_mask.py @@ -24,12 +24,11 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 035390c4c88..83b71e894f0 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py @@ -18,12 +18,11 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("e", "extended", "Show extended info") self.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 32063c71c47..de55469736e 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py @@ -25,12 +25,11 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("e", "extended", "Show extended info") self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py b/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py index 724349ac510..2adb6acd278 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py @@ -24,12 +24,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("p:", "property=", "Add property to the user =") self.registerSwitch("f", "force", "create the user if it doesn't exist") self.parseCommandLine(ignoreErrors=True) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py b/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py index 171e9b4b7a0..4481699b90a 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py @@ -33,12 +33,11 @@ # pylint: disable=wrong-import-position import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py b/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py index 0b7a1bf55d1..03a4a70b9a0 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py @@ -23,12 +23,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py b/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py index 7b1dc95d7f5..818204240a5 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py @@ -30,12 +30,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.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 a8516eb518e..1beb5fa0eca 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_set_site_protocols.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_set_site_protocols.py @@ -22,12 +22,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("", "Site=", "Site for which protocols are to be set (mandatory)") self.parseCommandLine(ignoreErrors=True) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py b/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py index 9fd0d51aefa..bf17c86c36a 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py @@ -28,12 +28,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.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 4419dd203bf..aa02e03e351 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_site_mask_logging.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_site_mask_logging.py @@ -24,12 +24,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.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 801fa3fed80..5eade5b269a 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 @@ -21,14 +21,13 @@ from diraccfg import CFG import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript __RCSID__ = "$Id$" @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("t", "test", "Only test. Don't commit changes") self.parseCommandLine(ignoreErrors=True) diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py b/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py index b91a0deda29..aa1663ae02c 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py @@ -24,12 +24,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) lfns = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py index b46ac3a1232..e70e0c15125 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py @@ -27,12 +27,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py index 2ea429b8ad2..3be618a68ae 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py @@ -36,12 +36,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) lfns = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py index 1867b97c350..0ec36b65408 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py @@ -25,12 +25,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch('a', "All", " Also show inactive replicas") self.parseCommandLine(ignoreErrors=True) lfns = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py index 23a8e9ce9b6..17b1e0843d4 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py @@ -20,12 +20,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py index c880771152f..02d596971b9 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py @@ -20,12 +20,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py b/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py index 3d8c2e6adff..16961a7a28e 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py @@ -28,12 +28,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py b/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py index 11ff19a414f..e17ac92032e 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py +++ b/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py @@ -45,12 +45,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.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 30a1551b990..037e3c2c3c3 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py +++ b/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py @@ -19,7 +19,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter with open(os.devnull, 'w') as redirectStdout, open(os.devnull, 'w') as redirectStderr: from DIRAC import gLogger from DIRAC.ConfigurationSystem.Client.ConfigurationData import gConfigurationData diff --git a/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py b/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py index beb604ffaf8..874d901b60f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py +++ b/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py @@ -15,12 +15,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=False) args = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py b/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py index 5f894b7fc9d..2881965e004 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py +++ b/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py @@ -21,12 +21,11 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=False) files = self.getPositionalArgs() if len(files) == 0: diff --git a/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py b/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py index 52646e8f5fc..6b07e2010b3 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py +++ b/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py @@ -22,12 +22,11 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=False) files = self.getPositionalArgs() if len(files) == 0: 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 5fe130b6f3e..49b0164cdfa 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 @@ -26,13 +26,12 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.WorkloadManagementSystem.Client.CPUNormalization import queueNormalizedCPU from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.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 ceebc372813..1c241786673 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_get_queue_normalization.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_get_queue_normalization.py @@ -22,12 +22,11 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py index 4147d13653f..08100999c7b 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py @@ -56,12 +56,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py index de4b19dfa51..807eba52576 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py @@ -24,12 +24,11 @@ import os.path -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("f:", "File=", "Get output for jobs with IDs from the file") self.registerSwitch("g:", "JobGroup=", "Get output for jobs in the given group") 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 48c4210a476..350366376c1 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_input.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_input.py @@ -25,12 +25,11 @@ import os import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("D:", "Dir=", "Store the output in this directory") self.parseCommandLine(ignoreErrors=True) args = self.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 3f9eb59f4eb..6ed8b5366ec 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_jdl.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_jdl.py @@ -39,12 +39,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter original = False self.registerSwitch('O', 'Original', 'Gets the original JDL') self.parseCommandLine(ignoreErrors=True) 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 d40bd4131bd..32ad95cfc8b 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output.py @@ -26,12 +26,11 @@ import shutil import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("D:", "Dir=", "Store the output in this directory") self.registerSwitch("f:", "File=", "Get output for jobs with IDs from the file") self.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 bbcd72d2e63..a59afcd49ae 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 @@ -19,12 +19,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("D:", "Dir=", "Store the output in this directory") self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py index d15daac932f..085eaf95f7e 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py @@ -35,12 +35,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.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 de154b294ec..cd955ccc6f2 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_logging_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_logging_info.py @@ -37,12 +37,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py index 5421c05e11a..a66d093140c 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py @@ -47,12 +47,11 @@ import DIRAC from DIRAC import gLogger -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py index 9baaa9e8171..42226b3cadb 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py @@ -22,12 +22,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py index 02e757f70ae..756e7c9c5ad 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py @@ -23,12 +23,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py index 2a9e8d6447b..bfadfe52c3e 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py @@ -23,12 +23,11 @@ __RCSID__ = "$Id$" import os -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("f:", "File=", "Get status for jobs with IDs from the file") self.registerSwitch("g:", "JobGroup=", "Get status for jobs in the given group") diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py index c798c5ed4df..7e7e8a3ea30 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py @@ -25,12 +25,11 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("f:", "File=", "Writes job ids to file ") self.registerSwitch("r:", "UseJobRepo=", "Use the job repository") self.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 0b641c960b9..06677e2cff6 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 @@ -22,12 +22,11 @@ from shutil import rmtree import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("", "Status=", "Primary status") self.registerSwitch("", "MinorStatus=", "Secondary status") self.registerSwitch("", "ApplicationStatus=", "Application status") diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py b/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py index 4e9e5accd2b..472e6b8dc6f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py @@ -20,12 +20,11 @@ import DIRAC from DIRAC import gLogger -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter maxJobs = 100 self.registerSwitch("", "Status=", "Primary status") self.registerSwitch("", "MinorStatus=", "Secondary status") diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py index 3d47b6975ba..ba0f17b0135 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 e208c9f8e2d..7898c4d2dc3 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 a7cdeb64c93..fce88bf8217 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py @@ -21,7 +21,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 309089e4ce0..f70242f32cd 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine() from DIRAC.Core.Utilities.PrettyPrint import printTable diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py index f1c31dc32f6..2b28dc34ea3 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py @@ -18,7 +18,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 e6a9b864fbc..ec0e8c9b7c5 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 cb8e2b48c69..8f20ce7084f 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py @@ -24,7 +24,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 3662f6e33ea..9144f258931 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 b3edc5b66e0..635e2cabe3a 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 34d06343fdf..7b9a700c68b 100755 --- a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_list_req_cache.py +++ b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_list_req_cache.py @@ -17,7 +17,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch('', 'Full', ' Print full list of requests') from DIRAC.Core.Base.Script import parseCommandLine parseCommandLine() diff --git a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py index fa4629501d2..16de1d34eec 100755 --- a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py +++ b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py @@ -16,7 +16,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter 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 66aefc0ee14..fa624f30b54 100755 --- a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py +++ b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py @@ -36,7 +36,7 @@ def convertDate(date): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter from DIRAC.Core.Base import Script self.registerSwitch('', 'Job=', ' JobID[,jobID2,...]') self.registerSwitch('', 'Transformation=', ' transformation ID') diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py index 5ce480cd723..93191878401 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py @@ -158,7 +158,7 @@ def run(): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global subLogger global switchDict subLogger = gLogger.getSubLogger(__file__) diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py index 34e7aa8f5ad..fdc6f09f223 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py @@ -417,7 +417,7 @@ def run(args, switchDictSet): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global subLogger subLogger = gLogger.getSubLogger(__file__) diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py index 44765d6364d..9b48552eca4 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py @@ -341,7 +341,7 @@ def run(args, switchDict): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global subLogger global ResourceManagementClient diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_status.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_status.py index 24edd39763e..07d95306291 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_status.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_status.py @@ -242,7 +242,7 @@ def run(switchDict): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global subLogger global registerUsageMessage diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py index 90506119592..592a34acec6 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py @@ -180,7 +180,7 @@ def setToken(user): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter """ Main function of the script. Gets the username from the proxy loaded and sets the token taking into account that user and the switchDict parameters. diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py index 7f2679d6ab7..0cdc69f5278 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py @@ -252,7 +252,7 @@ def run(): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global subLogger global switchDict global DEFAULT_STATUS diff --git a/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py b/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py index f4635fa8897..b4aa4e0e7d3 100755 --- a/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py +++ b/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py @@ -21,7 +21,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global ceName global Queue global Site diff --git a/src/DIRAC/Resources/scripts/dirac_resource_info.py b/src/DIRAC/Resources/scripts/dirac_resource_info.py index a85b0114fc3..a06e9ea66e2 100644 --- a/src/DIRAC/Resources/scripts/dirac_resource_info.py +++ b/src/DIRAC/Resources/scripts/dirac_resource_info.py @@ -17,7 +17,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter from DIRAC import S_OK, gLogger, gConfig, exit as DIRACExit diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py index 08f4f8cc160..0393dfd7b84 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py @@ -31,7 +31,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.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 ea195e7c518..59370a0a659 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=False) args = self.getPositionalArgs() diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py index ab20ed2d2cd..1741421f1ee 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=False) args = self.getPositionalArgs() diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py index d326bb9a0da..f2ae506a6cf 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py @@ -20,7 +20,7 @@ $ dirac-stager-show-requests.py --status=Staged --se=GRIDKA-RDST --limit=10 --showJobs=YES Query limited to 10 entries - Status LastUpdate LFN SE Reason Jobs PinExpiryTime PinLength + Status LastUpdate LFN SE Reason Jobs PinExpiryTime PinLength Staged 2013-06-05 20:10:50 /lhcb/LHCb/5.full.dst GRIDKA-RDST None ['48498752'] 2013-06-05 22:10:50 86400 Staged 2013-06-06 15:54:29 /lhcb/LHCb/1.full.dst GRIDKA-RDST None ['48516851'] 2013-06-06 16:54:29 43200 Staged 2013-06-07 02:35:41 /lhcb/LHCb/3.full.dst GRIDKA-RDST None ['48520736'] 2013-06-07 03:35:41 43200 @@ -44,7 +44,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter subLogger = gLogger.getSubLogger(__file__) switches = (('status=', 'Filter per file status=(New, Offline, Waiting, Failed, StageSubmitted, Staged).' diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py index 7b13a5f987b..17459cce194 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py @@ -33,7 +33,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=False) from DIRAC.StorageManagementSystem.Client.StorageManagerClient import StorageManagerClient client = StorageManagerClient() diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py index cb4169c1c49..5d7f8d789c4 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py @@ -40,7 +40,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py b/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py index abe84cc4dd1..1180309d4c5 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py @@ -136,7 +136,7 @@ def __runJobLocally(jobID, basepath, vo): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=False) self.registerSwitch('D:', 'Download=', 'Defines data acquisition as DownloadInputData') self.registerSwitch('P:', 'Protocol=', 'Defines data acquisition as InputDataByProtocol') diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py index c77824ce4e2..40fedc307d2 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py @@ -18,7 +18,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 ec01ba14023..2c451e5911d 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py @@ -16,7 +16,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine() args = self.getPositionalArgs() diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py index 3a34fd61356..7a7b1b1422f 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py @@ -16,7 +16,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine() args = self.getPositionalArgs() diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py index e7d7d9cf762..664b974994e 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py @@ -11,7 +11,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 9e10ee63984..36dadb05579 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py @@ -18,7 +18,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.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 c5f6f85ea68..004f9e9c346 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py @@ -19,6 +19,10 @@ class Params(object): def __init__(self): self.enabled = False self.transID = 0 + self.switches = [ + ('T:', 'TransID=', 'TransID to Check/Fix', self.setTransID), + ('X', 'Enabled', 'Enable the changes', self.setEnabled) + ] def setEnabled(self, _): self.enabled = True @@ -28,15 +32,11 @@ def setTransID(self, transID): self.transID = int(transID) return S_OK() - def registerSwitches(self): - self.registerSwitch('T:', 'TransID=', 'TransID to Check/Fix', self.setTransID) - self.registerSwitch('X', 'Enabled', 'Enable the changes', self.setEnabled) - @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter PARAMS = Params() - PARAMS.registerSwitches(self) + self.registerSwitches(PARAMS.switches) self.parseCommandLine(ignoreErrors=False) # Create Data Recovery Agent and run over single transformation. diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py index f0204f39583..2741286c827 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py @@ -17,7 +17,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine() args = self.getPositionalArgs() diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_replication.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_replication.py index eb615eaf006..297486e4569 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_replication.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_replication.py @@ -17,7 +17,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter """reads command line parameters, makes check and creates replication transformation""" from DIRAC import gLogger, exit as dexit from DIRAC.TransformationSystem.Utilities.ReplicationCLIParameters import Params diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py index dc4aa0d7f24..11400668f23 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py @@ -16,7 +16,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine() args = self.getPositionalArgs() diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py index 6e43a6a073f..bfa6dc99c0b 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) args = self.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 b003b4b5ae8..e656e2f9773 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_pilot_logging_info.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_pilot_logging_info.py @@ -40,7 +40,7 @@ def setJobID(optVal): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global uuid global jobid self.registerSwitch('u:', 'uuid=', 'get PilotsLogging for given Pilot UUID', setUUID) diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_show_task_queues.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_show_task_queues.py index b4490f66eb8..982cd09a751 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_show_task_queues.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_show_task_queues.py @@ -57,7 +57,7 @@ def setTaskQueueID(optVal): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global verbose global taskQueueID self.registerSwitch("v", "verbose", "give max details about task queues", setVerbose) diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_sync_pilot.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_sync_pilot.py index 26b5f9306d5..b1bec783c67 100644 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_sync_pilot.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_sync_pilot.py @@ -30,7 +30,7 @@ def setNoMasterCS(optVal): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global includeMasterCS self.registerSwitch("n", "noMasterCS", "do not include master CS", setNoMasterCS) self.parseCommandLine() diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_jobexec.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_jobexec.py index fd1e110b6a8..0558c10c2c5 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_jobexec.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_jobexec.py @@ -24,7 +24,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter # Register workflow parameter switch self.registerSwitch('p:', 'parameter=', 'Parameters that are passed directly to the workflow') self.parseCommandLine() diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_cpu_normalization.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_cpu_normalization.py index 01dd9ff85a1..239f24d74f6 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_cpu_normalization.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_cpu_normalization.py @@ -30,7 +30,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("U", "Update", "Update dirac.cfg with the resulting value") self.registerSwitch("R:", "Reconfig=", "Update given configuration file with the resulting value") self.parseCommandLine(ignoreErrors=True) diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_queue_cpu_time.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_queue_cpu_time.py index c9730526d1c..c2cfaee8859 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_queue_cpu_time.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_queue_cpu_time.py @@ -18,7 +18,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter self.registerSwitch("C:", "CPUNormalizationFactor=", "CPUNormalizationFactor, in case it is known") self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn.py index 4a7c673bd12..f71682d6353 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter site = 'BOINC.World.org' status = ["Running"] minorStatus = None diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn_parameters.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn_parameters.py index f8909a3a10e..81e79891b0f 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn_parameters.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn_parameters.py @@ -34,7 +34,7 @@ def setQueue(args): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global ceName global Site global Queue diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_match.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_match.py index 2c0886b9db7..160938aa6b0 100644 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_match.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_match.py @@ -37,7 +37,7 @@ def setSites(optVal_): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter global fullMatch global sites self.registerSwitch("F", "full-match", "Check all the matching criteria", setFullMatch) diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_pilot_job_info.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_pilot_job_info.py index 37f4e1e4bbf..a70f05b000a 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_pilot_job_info.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_pilot_job_info.py @@ -31,7 +31,7 @@ def _stringInList(subStr, sList): @DIRACScript() -def main(self): +def main(self): # pylint: disable=no-value-for-parameter parameters = ['OwnerDN', 'StartExecTime', 'EndExecTime'] self.registerSwitch('', 'Parameters=', ' List of strings to be matched by job parameters or attributes') self.parseCommandLine(ignoreErrors=True) From afb4f4e7f740f766f41a27a98cbed11ddb26b82f Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Mon, 15 Mar 2021 02:14:50 +0100 Subject: [PATCH 06/43] fix pylint --- .../Interfaces/scripts/dirac_admin_add_group.py | 15 ++++++++------- .../Interfaces/scripts/dirac_admin_add_host.py | 17 +++++++++-------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py index b9ae6df648f..e3d32474d86 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py @@ -22,6 +22,7 @@ import DIRAC from DIRAC.Core.Utilities.DIRACScript import DIRACScript + class Params(object): def __init__(self, script): @@ -65,7 +66,7 @@ def main(self): # pylint: disable=no-value-for-parameter self.parseCommandLine(ignoreErrors=True) - if groupName is None: + if params.groupName is None: self.showHelp(exitCode=1) args = self.getPositionalArgs() @@ -76,10 +77,10 @@ def main(self): # pylint: disable=no-value-for-parameter errorList = [] groupProps = {} - if userNames: - groupProps['Users'] = ', '.join(userNames) - if groupProperties: - groupProps['Properties'] = ', '.join(groupProperties) + if params.userNames: + groupProps['Users'] = ', '.join(params.userNames) + if params.groupProperties: + groupProps['Properties'] = ', '.join(params.groupProperties) for prop in args: pl = prop.split("=") @@ -92,8 +93,8 @@ def main(self): # pylint: disable=no-value-for-parameter self.gLogger.info("Setting property %s to %s" % (pName, pValue)) groupProps[pName] = pValue - if not diracAdmin.csModifyGroup(groupName, groupProps, createIfNonExistant=True)['OK']: - errorList.append(("add group", "Cannot register group %s" % groupName)) + if not diracAdmin.csModifyGroup(params.groupName, groupProps, createIfNonExistant=True)['OK']: + errorList.append(("add group", "Cannot register group %s" % params.groupName)) exitCode = 255 else: result = diracAdmin.csCommitChanges() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py index eab9f51f72d..ae429b47115 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py @@ -20,6 +20,7 @@ import DIRAC from DIRAC.Core.Utilities.DIRACScript import DIRACScript + class Params(object): def __init__(self, script): @@ -58,7 +59,7 @@ def main(self): # pylint: disable=no-value-for-parameter self.registerSwitches(params.switches) self.parseCommandLine(ignoreErrors=True) - if hostName is None or hostDN is None: + if params.hostName is None or params.hostDN is None: self.showHelp(exitCode=1) args = self.getPositionalArgs() @@ -68,9 +69,9 @@ def main(self): # pylint: disable=no-value-for-parameter exitCode = 0 errorList = [] - hostProps = {'DN': hostDN} - if hostProperties: - hostProps['Properties'] = ', '.join(hostProperties) + hostProps = {'DN': params.hostDN} + if params.hostProperties: + hostProps['Properties'] = ', '.join(params.hostProperties) for prop in args: pl = prop.split("=") @@ -83,8 +84,8 @@ def main(self): # pylint: disable=no-value-for-parameter self.gLogger.info("Setting property %s to %s" % (pName, pValue)) hostProps[pName] = pValue - if not diracAdmin.csModifyHost(hostName, hostProps, createIfNonExistant=True)['OK']: - errorList.append(("add host", "Cannot register host %s" % hostName)) + if not diracAdmin.csModifyHost(params.hostName, hostProps, createIfNonExistant=True)['OK']: + errorList.append(("add host", "Cannot register host %s" % params.hostName)) exitCode = 255 else: result = diracAdmin.csCommitChanges() @@ -95,13 +96,13 @@ def main(self): # pylint: disable=no-value-for-parameter if exitCode == 0: from DIRAC.FrameworkSystem.Client.ComponentMonitoringClient import ComponentMonitoringClient cmc = ComponentMonitoringClient() - ret = cmc.hostExists(dict(HostName=hostName)) + ret = cmc.hostExists(dict(HostName=params.hostName)) if not ret['OK']: self.gLogger.error('Cannot check if host is registered in ComponentMonitoring', ret['Message']) elif ret['Value']: self.gLogger.info('Host already registered in ComponentMonitoring') else: - ret = cmc.addHost(dict(HostName=hostName, CPU='TO_COME')) + ret = cmc.addHost(dict(HostName=params.hostName, CPU='TO_COME')) if not ret['OK']: self.gLogger.error('Failed to add Host to ComponentMonitoring', ret['Message']) From 8b701d7868563e396a56a2c584b89c875f700787 Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Mon, 15 Mar 2021 02:18:56 +0100 Subject: [PATCH 07/43] fix pylint --- .../DevelopingCommands/dirac-my-great-script.py | 4 ++-- .../AddingNewComponents/DevelopingCommands/dirac_ping_info.py | 4 ++-- .../scripts/dirac_accounting_decode_fileid.py | 2 +- .../AccountingSystem/scripts/dirac_admin_accounting_cli.py | 4 ++-- .../ConfigurationSystem/scripts/dirac_admin_add_resources.py | 2 +- .../ConfigurationSystem/scripts/dirac_admin_add_shifter.py | 4 ++-- src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py | 4 ++-- .../ConfigurationSystem/scripts/dirac_admin_bdii_info.py | 4 ++-- .../scripts/dirac_admin_check_config_options.py | 4 ++-- .../ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py | 4 ++-- .../ConfigurationSystem/scripts/dirac_admin_voms_sync.py | 4 ++-- .../ConfigurationSystem/scripts/dirac_configuration_cli.py | 4 ++-- .../scripts/dirac_configuration_dump_local_cache.py | 4 ++-- .../ConfigurationSystem/scripts/dirac_configuration_shell.py | 4 ++-- src/DIRAC/Core/Tornado/scripts/tornado_start_CS.py | 2 +- src/DIRAC/Core/Tornado/scripts/tornado_start_all.py | 2 +- src/DIRAC/Core/scripts/dirac_agent.py | 4 ++-- src/DIRAC/Core/scripts/dirac_configure.py | 4 ++-- src/DIRAC/Core/scripts/dirac_executor.py | 4 ++-- src/DIRAC/Core/scripts/dirac_externals_requirements.py | 4 ++-- src/DIRAC/Core/scripts/dirac_info.py | 4 ++-- src/DIRAC/Core/scripts/dirac_install_db.py | 4 ++-- src/DIRAC/Core/scripts/dirac_install_web_portal.py | 4 ++-- src/DIRAC/Core/scripts/dirac_platform.py | 2 +- src/DIRAC/Core/scripts/dirac_service.py | 4 ++-- src/DIRAC/Core/scripts/dirac_setup_site.py | 4 ++-- src/DIRAC/Core/scripts/dirac_version.py | 4 ++-- .../DataManagementSystem/scripts/dirac_admin_allow_se.py | 4 ++-- src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py | 4 ++-- .../DataManagementSystem/scripts/dirac_admin_user_quota.py | 4 ++-- src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py | 4 ++-- .../scripts/dirac_dms_catalog_metadata.py | 4 ++-- .../scripts/dirac_dms_change_replica_status.py | 4 ++-- .../DataManagementSystem/scripts/dirac_dms_clean_directory.py | 4 ++-- .../scripts/dirac_dms_create_archive_request.py | 4 ++-- .../scripts/dirac_dms_create_moving_request.py | 4 ++-- .../scripts/dirac_dms_create_removal_request.py | 4 ++-- src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py | 4 ++-- .../DataManagementSystem/scripts/dirac_dms_directory_sync.py | 4 ++-- .../DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py | 4 ++-- src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py | 4 ++-- .../scripts/dirac_dms_move_replica_request.py | 4 ++-- .../DataManagementSystem/scripts/dirac_dms_protocol_matrix.py | 2 +- .../scripts/dirac_dms_put_and_register_request.py | 4 ++-- .../scripts/dirac_dms_remove_catalog_files.py | 4 ++-- .../scripts/dirac_dms_remove_catalog_replicas.py | 4 ++-- .../DataManagementSystem/scripts/dirac_dms_remove_files.py | 4 ++-- .../DataManagementSystem/scripts/dirac_dms_remove_replicas.py | 4 ++-- .../scripts/dirac_dms_replica_metadata.py | 4 ++-- .../scripts/dirac_dms_replicate_and_register_request.py | 4 ++-- .../DataManagementSystem/scripts/dirac_dms_resolve_guid.py | 4 ++-- .../scripts/dirac_dms_set_replica_status.py | 4 ++-- .../DataManagementSystem/scripts/dirac_dms_show_se_status.py | 4 ++-- src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py | 4 ++-- .../DataManagementSystem/scripts/dirac_dms_user_quota.py | 4 ++-- src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py | 4 ++-- src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py | 4 ++-- src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py | 4 ++-- src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py | 4 ++-- .../FrameworkSystem/scripts/dirac_admin_update_instance.py | 2 +- src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py | 4 ++-- .../FrameworkSystem/scripts/dirac_admin_users_with_proxy.py | 4 ++-- src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py | 4 ++-- .../FrameworkSystem/scripts/dirac_install_tornado_service.py | 4 ++-- .../scripts/dirac_monitoring_get_components_status.py | 4 ++-- src/DIRAC/FrameworkSystem/scripts/dirac_myproxy_upload.py | 4 ++-- .../FrameworkSystem/scripts/dirac_populate_component_db.py | 4 ++-- src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py | 4 ++-- .../FrameworkSystem/scripts/dirac_proxy_get_uploaded_info.py | 4 ++-- src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py | 4 ++-- src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py | 4 ++-- src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py | 4 ++-- src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py | 4 ++-- src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py | 4 ++-- src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py | 4 ++-- src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py | 4 ++-- .../FrameworkSystem/scripts/dirac_uninstall_component.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_get_banned_sites.py | 4 ++-- .../Interfaces/scripts/dirac_admin_get_job_pilot_output.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_get_job_pilots.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_info.py | 4 ++-- .../Interfaces/scripts/dirac_admin_get_pilot_logging_info.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_output.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_get_site_mask.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py | 4 ++-- .../Interfaces/scripts/dirac_admin_set_site_protocols.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_admin_site_mask_logging.py | 4 ++-- .../Interfaces/scripts/dirac_admin_sync_users_from_file.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py | 4 ++-- .../scripts/dirac_wms_get_normalized_queue_length.py | 4 ++-- .../Interfaces/scripts/dirac_wms_get_queue_normalization.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_wms_job_get_input.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_wms_job_get_jdl.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output_data.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_wms_job_logging_info.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py | 4 ++-- .../Interfaces/scripts/dirac_wms_jobs_select_output_search.py | 4 ++-- src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py | 4 ++-- src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py | 4 ++-- src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py | 4 ++-- src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py | 4 ++-- src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py | 4 ++-- src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py | 4 ++-- .../ProductionSystem/scripts/dirac_prod_get_description.py | 4 ++-- src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py | 4 ++-- src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py | 4 ++-- src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py | 4 ++-- .../scripts/dirac_rms_list_req_cache.py | 4 ++-- .../scripts/dirac_rms_reqdb_summary.py | 4 ++-- .../RequestManagementSystem/scripts/dirac_rms_request.py | 4 ++-- .../ResourceStatusSystem/scripts/dirac_rss_list_status.py | 4 ++-- src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py | 4 ++-- .../ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py | 4 ++-- .../ResourceStatusSystem/scripts/dirac_rss_set_status.py | 4 ++-- src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py | 4 ++-- src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py | 4 ++-- src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py | 4 ++-- src/DIRAC/Resources/scripts/dirac_resource_info.py | 4 ++-- .../scripts/dirac_stager_monitor_file.py | 4 ++-- .../scripts/dirac_stager_monitor_jobs.py | 4 ++-- .../scripts/dirac_stager_monitor_request.py | 4 ++-- .../scripts/dirac_stager_monitor_requests.py | 4 ++-- .../scripts/dirac_stager_show_stats.py | 4 ++-- .../scripts/dirac_stager_stage_files.py | 4 ++-- .../scripts/dirac_production_runjoblocal.py | 4 ++-- .../scripts/dirac_transformation_add_files.py | 4 ++-- .../scripts/dirac_transformation_archive.py | 4 ++-- .../scripts/dirac_transformation_clean.py | 4 ++-- .../TransformationSystem/scripts/dirac_transformation_cli.py | 4 ++-- .../scripts/dirac_transformation_get_files.py | 4 ++-- .../scripts/dirac_transformation_recover_data.py | 4 ++-- .../scripts/dirac_transformation_remove_output.py | 4 ++-- .../scripts/dirac_transformation_replication.py | 4 ++-- .../scripts/dirac_transformation_verify_outputdata.py | 4 ++-- .../scripts/dirac_admin_kill_pilot.py | 4 ++-- .../scripts/dirac_admin_pilot_logging_info.py | 4 ++-- .../scripts/dirac_admin_show_task_queues.py | 4 ++-- .../scripts/dirac_admin_sync_pilot.py | 4 ++-- src/DIRAC/WorkloadManagementSystem/scripts/dirac_jobexec.py | 4 ++-- .../scripts/dirac_wms_cpu_normalization.py | 4 ++-- .../scripts/dirac_wms_get_queue_cpu_time.py | 4 ++-- .../WorkloadManagementSystem/scripts/dirac_wms_get_wn.py | 4 ++-- .../scripts/dirac_wms_get_wn_parameters.py | 4 ++-- src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_match.py | 4 ++-- .../scripts/dirac_wms_pilot_job_info.py | 4 ++-- 177 files changed, 347 insertions(+), 347 deletions(-) diff --git a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py index d925f2ae666..0702aa98507 100644 --- a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py +++ b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py @@ -53,7 +53,7 @@ def setNumOfPingsToDo(self, value): # IMPORTANT: Make sure to add the console-scripts entry to setup.cfg as well! @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): ''' This is the script main method, which will hold all the logic. ''' @@ -86,4 +86,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_ping_info.py b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_ping_info.py index fe4fe5aa8be..fc68cfe40e7 100644 --- a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_ping_info.py +++ b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_ping_info.py @@ -39,7 +39,7 @@ def setNumOfPingsToDo(self, value): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): # Instantiate the params class cliParams = Params() @@ -58,4 +58,4 @@ def main(self): # pylint: disable=no-value-for-parameter gLogger.notice('Ping %s!' % ', '.join(servicesList)) if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py b/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py index fa948cd5aca..a118a941210 100755 --- a/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py +++ b/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py @@ -29,7 +29,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): from DIRAC.Core.Utilities.Plotting.FileCoding import extractRequestFromFileId self.parseCommandLine() diff --git a/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py b/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py index fe6faa9e663..63c09d92586 100755 --- a/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py +++ b/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.localCfg.addDefaultEntry("LogLevel", "info") self.parseCommandLine() @@ -31,4 +31,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py index 30de7e4328e..229671a3a1b 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py @@ -257,7 +257,7 @@ def handler(signum, frame): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): signal.signal(signal.SIGTERM, handler) signal.signal(signal.SIGINT, handler) diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py index 90b71a12d75..ca51cb795f5 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py @@ -26,7 +26,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -51,4 +51,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py index 45f3a1d54d3..69af25abef4 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py @@ -34,7 +34,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -105,4 +105,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py index 0d4ef86742a..0a329cf18cc 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py @@ -134,7 +134,7 @@ def showInfo(result, info): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): # Script initialization registerSwitches(self) # registerUsageMessage() @@ -146,4 +146,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 86ff78bc113..968f4b52da7 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_check_config_options.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_check_config_options.py @@ -202,7 +202,7 @@ def run(self): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): checkConfig = CheckConfig() self.registerSwitches(checkConfig.switches) self.parseCommandLine(ignoreErrors=True) @@ -212,4 +212,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py index e8eadc4db3c..289564393fe 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py @@ -55,7 +55,7 @@ def country(arg): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch( "C", "country", @@ -135,4 +135,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py index f0d18183484..f38127e7e8a 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py @@ -39,7 +39,7 @@ def setVO(value): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("V:", "vo=", "VO name", setVO) self.registerSwitch("D", "dryRun", "Dry run", setDryRun) self.parseCommandLine(ignoreErrors=True) @@ -100,4 +100,4 @@ def getVOAdmin(voName): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py index c588eb9ee66..d94a9b59ff0 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py @@ -18,7 +18,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.localCfg.addDefaultEntry("LogLevel", "fatal") self.parseCommandLine() @@ -26,4 +26,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 214a26a2861..9ef8c96dee8 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_dump_local_cache.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_dump_local_cache.py @@ -19,7 +19,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.localCfg.addDefaultEntry("LogLevel", "fatal") fileName = "" @@ -53,4 +53,4 @@ def setRaw(args): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_shell.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_shell.py index aebe1b5b7fe..291d338d229 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_shell.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_shell.py @@ -17,7 +17,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC.ConfigurationSystem.Client.CSShellCLI import CSShellCLI shell = CSShellCLI() @@ -25,4 +25,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Core/Tornado/scripts/tornado_start_CS.py b/src/DIRAC/Core/Tornado/scripts/tornado_start_CS.py index 862101b23cd..899d8c63c34 100644 --- a/src/DIRAC/Core/Tornado/scripts/tornado_start_CS.py +++ b/src/DIRAC/Core/Tornado/scripts/tornado_start_CS.py @@ -62,4 +62,4 @@ def main(): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Core/Tornado/scripts/tornado_start_all.py b/src/DIRAC/Core/Tornado/scripts/tornado_start_all.py index 2231acbd15e..8c1bfa58377 100644 --- a/src/DIRAC/Core/Tornado/scripts/tornado_start_all.py +++ b/src/DIRAC/Core/Tornado/scripts/tornado_start_all.py @@ -62,4 +62,4 @@ def main(): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Core/scripts/dirac_agent.py b/src/DIRAC/Core/scripts/dirac_agent.py index f0b0002beb7..1c53cd1f06a 100755 --- a/src/DIRAC/Core/scripts/dirac_agent.py +++ b/src/DIRAC/Core/scripts/dirac_agent.py @@ -22,7 +22,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): positionalArgs = self.localCfg.getPositionalArguments() if len(positionalArgs) == 0: gLogger.fatal("You must specify which agent to run!") @@ -51,4 +51,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Core/scripts/dirac_configure.py b/src/DIRAC/Core/scripts/dirac_configure.py index 5f7dbe8bf2b..d02f9407564 100755 --- a/src/DIRAC/Core/scripts/dirac_configure.py +++ b/src/DIRAC/Core/scripts/dirac_configure.py @@ -586,7 +586,7 @@ def run(self): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.disableCS() confInit = ConfigureInit(self) @@ -597,4 +597,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Core/scripts/dirac_executor.py b/src/DIRAC/Core/scripts/dirac_executor.py index 535d14197ea..ef4b7eff825 100755 --- a/src/DIRAC/Core/scripts/dirac_executor.py +++ b/src/DIRAC/Core/scripts/dirac_executor.py @@ -22,7 +22,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): positionalArgs = self.localCfg.getPositionalArguments() if len(positionalArgs) == 0: gLogger.fatal("You must specify which executor to run!") @@ -61,4 +61,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Core/scripts/dirac_externals_requirements.py b/src/DIRAC/Core/scripts/dirac_externals_requirements.py index 886b6d02475..cd01587ca87 100755 --- a/src/DIRAC/Core/scripts/dirac_externals_requirements.py +++ b/src/DIRAC/Core/scripts/dirac_externals_requirements.py @@ -47,7 +47,7 @@ def pipInstall(package, switches=""): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.disableCS() self.registerSwitch("t:", "type=", "Installation type. 'server' by default.", setInstallType) @@ -100,4 +100,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Core/scripts/dirac_info.py b/src/DIRAC/Core/scripts/dirac_info.py index 2ca8c9e4b4d..e159c291676 100755 --- a/src/DIRAC/Core/scripts/dirac_info.py +++ b/src/DIRAC/Core/scripts/dirac_info.py @@ -42,7 +42,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): def version(arg): self.disableCS() print(DIRAC.version) @@ -103,4 +103,4 @@ def platform(arg): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Core/scripts/dirac_install_db.py b/src/DIRAC/Core/scripts/dirac_install_db.py index c2408e3c534..4eccdb02bf5 100755 --- a/src/DIRAC/Core/scripts/dirac_install_db.py +++ b/src/DIRAC/Core/scripts/dirac_install_db.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() args = self.getPositionalArgs() if len(args) < 1: @@ -48,4 +48,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Core/scripts/dirac_install_web_portal.py b/src/DIRAC/Core/scripts/dirac_install_web_portal.py index 3fed78022b9..ecd7e5a3ebe 100755 --- a/src/DIRAC/Core/scripts/dirac_install_web_portal.py +++ b/src/DIRAC/Core/scripts/dirac_install_web_portal.py @@ -17,7 +17,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.disableCS() self.parseCommandLine() @@ -28,4 +28,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Core/scripts/dirac_platform.py b/src/DIRAC/Core/scripts/dirac_platform.py index 19ef21fc665..c6b0d65b6a7 100755 --- a/src/DIRAC/Core/scripts/dirac_platform.py +++ b/src/DIRAC/Core/scripts/dirac_platform.py @@ -161,4 +161,4 @@ def main(self): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Core/scripts/dirac_service.py b/src/DIRAC/Core/scripts/dirac_service.py index 84c1de6c489..8261413eeb6 100755 --- a/src/DIRAC/Core/scripts/dirac_service.py +++ b/src/DIRAC/Core/scripts/dirac_service.py @@ -25,7 +25,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): positionalArgs = self.localCfg.getPositionalArguments() if len(positionalArgs) == 0: gLogger.fatal("You must specify which server to run!") @@ -60,4 +60,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Core/scripts/dirac_setup_site.py b/src/DIRAC/Core/scripts/dirac_setup_site.py index 8f2a603f93b..6c53b0304df 100755 --- a/src/DIRAC/Core/scripts/dirac_setup_site.py +++ b/src/DIRAC/Core/scripts/dirac_setup_site.py @@ -33,7 +33,7 @@ def setExitOnError(self, value): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): cliParams = Params() self.disableCS() @@ -76,4 +76,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Core/scripts/dirac_version.py b/src/DIRAC/Core/scripts/dirac_version.py index 9132080a339..6edd6471178 100755 --- a/src/DIRAC/Core/scripts/dirac_version.py +++ b/src/DIRAC/Core/scripts/dirac_version.py @@ -26,7 +26,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): parser = argparse.ArgumentParser( description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter, @@ -37,4 +37,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py index 1778f2b3b32..57818dfc411 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py @@ -19,7 +19,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): read = False write = False check = False @@ -200,4 +200,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py index 373a33967ef..dedbe7c8293 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): read = True write = True check = True @@ -246,4 +246,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py index 627418dcf06..16e0cefdd6c 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py @@ -27,7 +27,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() users = self.getPositionalArgs() @@ -53,4 +53,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py index 2e05fca30f3..2258b2e0465 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py @@ -68,7 +68,7 @@ def getDict(item_list): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global overwrite self.registerSwitch("f", "force", "Force overwrite of existing file", setOverwrite) self.parseCommandLine(ignoreErrors=True) @@ -122,4 +122,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py index c08a2834565..5f08abc49c9 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC.Resources.Catalog.FileCatalog import FileCatalog @@ -79,4 +79,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 c6f38a16bbf..79387f7b817 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_change_replica_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_change_replica_status.py @@ -17,7 +17,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC.Resources.Catalog.FileCatalog import FileCatalog @@ -62,4 +62,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py index d7833ed2967..207954b2061 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py @@ -25,7 +25,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() args = self.getPositionalArgs() @@ -60,4 +60,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 57fb7cc400c..6dd62927cf6 100644 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_archive_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_archive_request.py @@ -514,7 +514,7 @@ def _replicateSourceFiles(self, request, lfns): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): try: CAR = CreateArchiveRequest(self) CAR.run() @@ -528,4 +528,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 8d253214d4b..091ad48b602 100644 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_moving_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_moving_request.py @@ -284,7 +284,7 @@ def putOrRunRequests(self): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): try: CMR = CreateMovingRequest(self) CMR.run() @@ -298,4 +298,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 a4f6d441ca4..3165fa8c8ae 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_removal_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_removal_request.py @@ -24,7 +24,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=False) args = self.getPositionalArgs() @@ -115,4 +115,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py index 6b265826cc7..a3b2e13e042 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py @@ -27,7 +27,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): unit = 'GB' self.registerSwitch("u:", "Unit=", " Unit to use [default %s] (MB,GB,TB,PB)" % unit) @@ -76,4 +76,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py index 667a30e7b24..15142c575b0 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py @@ -37,7 +37,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("D", "sync", "Make target directory identical to source") self.registerSwitch("j:", "parallel=", "Multithreaded download and upload") self.parseCommandLine(ignoreErrors=False) @@ -560,4 +560,4 @@ def run(parameters, delete, nthreads): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py index 59e7c977642..db1abfa456a 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py @@ -34,7 +34,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): fcType = 'FileCatalog' self.registerSwitch("f:", "file-catalog=", " Catalog client type to use (default %s)" % fcType) self.parseCommandLine(ignoreErrors=False) @@ -79,4 +79,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py index 5bc039dcea0..21fac742ba4 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py @@ -20,7 +20,7 @@ from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch('', 'Path=', ' Path to search for') self.registerSwitch('', 'SE=', ' (comma-separated list of) SEs/SE-groups to be searched') self.parseCommandLine(ignoreErrors=True) @@ -75,4 +75,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 e3e1cdbd8f7..947358f2b04 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_move_replica_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_move_replica_request.py @@ -35,7 +35,7 @@ def getLFNList(arg): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): # from DIRAC.Core.Base.Script import parseCommandLine self.parseCommandLine() @@ -131,4 +131,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_protocol_matrix.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_protocol_matrix.py index fbf7aac944c..72dfd55ffe8 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_protocol_matrix.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_protocol_matrix.py @@ -198,4 +198,4 @@ def main(): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 36c4ab695bc..8b25f70bf89 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 @@ -27,7 +27,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): # from DIRAC.Core.Base.Script import parseCommandLine self.parseCommandLine() @@ -98,4 +98,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 658d2a71104..e46130ed7d3 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_files.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_files.py @@ -25,7 +25,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations @@ -73,4 +73,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 1a324bac3b4..87a9b44c845 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_replicas.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_replicas.py @@ -22,7 +22,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations @@ -68,4 +68,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py index 8d1e230c66d..841a2735312 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py @@ -19,7 +19,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() import os @@ -63,4 +63,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py index bf47af13cc6..76f202f0b47 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py @@ -22,7 +22,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC.Core.Utilities.List import breakListIntoChunks @@ -60,4 +60,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py index 91fc5687eef..d287c137385 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py @@ -19,7 +19,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC import gLogger @@ -59,4 +59,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 c5cb9b8bf22..a87f8a48e19 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 @@ -32,7 +32,7 @@ def getLFNList(arg): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): catalog = None self.registerSwitch("C:", "Catalog=", "Catalog to use") self.parseCommandLine() @@ -132,4 +132,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py index f5c00fbc4ec..1d0103c8c1c 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py @@ -16,7 +16,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() import DIRAC @@ -54,4 +54,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 a9ef5d30076..ed24437497d 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_set_replica_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_set_replica_status.py @@ -22,7 +22,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=False) import DIRAC @@ -76,4 +76,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 4330bb9b4a5..39369be36c8 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_show_se_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_show_se_status.py @@ -54,7 +54,7 @@ def setNoVO(arg): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global vo global noVOFlag global allVOsFlag @@ -121,4 +121,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py index 4a2c8629a22..9ea67631012 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py @@ -26,7 +26,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): days = 0 months = 0 years = 0 @@ -162,4 +162,4 @@ def isOlderThan(cTimeStruct, days): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py index a49ff076b2a..7283975af9f 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=False) import DIRAC @@ -45,4 +45,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py index 2cec23d3402..1ed9f7b58bf 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py @@ -25,7 +25,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.addDefaultOptionValue('/DIRAC/Security/SkipCAChecks', 'yes') self.parseCommandLine(ignoreErrors=True) @@ -53,4 +53,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py index dee70700e6c..6c06a26d40a 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py @@ -108,7 +108,7 @@ def setVOMSAttr(self, arg): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): params = Params() self.registerSwitches(params.switches) @@ -172,4 +172,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py index f4706e611fb..97609cb8794 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): cliParams = CLIParams() self.registerSwitches(cliParams.proxyUploadSwitches) @@ -37,4 +37,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py index eef502d21cc..a68a63789ad 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py @@ -18,7 +18,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): host = None self.registerSwitch("H:", "host=", " Target host") self.parseCommandLine(ignoreErrors=False) @@ -33,4 +33,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py index 3cc7d6d2ba1..2c439c78955 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py @@ -264,4 +264,4 @@ def updateInstance(version, hosts, excludeHosts, retry): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py index 3a25ebc5745..b96959f9cfc 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch( "v:", "vo=", @@ -84,4 +84,4 @@ def updatePilot(version, vo): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 2e39f8c6770..e346860e256 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_users_with_proxy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_users_with_proxy.py @@ -50,7 +50,7 @@ def setProxyLifeTime(self, arg): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): params = Params() self.registerSwitch(("v:", "valid=", "Required HH:MM for the users", params.setProxyLifeTime)) self.parseCommandLine(ignoreErrors=True) @@ -89,4 +89,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py index d6624e471af..3e9e2555c59 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py @@ -49,7 +49,7 @@ def setSpecialOption(optVal): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global overwrite global specialOptions global module @@ -129,4 +129,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py b/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py index 9212ad36e8c..e8ad5b3fb95 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py @@ -54,7 +54,7 @@ def setSpecialOption(optVal): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global overwrite global specialOptions global module @@ -114,4 +114,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_monitoring_get_components_status.py b/src/DIRAC/FrameworkSystem/scripts/dirac_monitoring_get_components_status.py index d1dc3541450..7cbaf1e2b34 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_monitoring_get_components_status.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_monitoring_get_components_status.py @@ -11,7 +11,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -54,4 +54,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_myproxy_upload.py b/src/DIRAC/FrameworkSystem/scripts/dirac_myproxy_upload.py index 8fe8f72d5b7..bb1f4e07aae 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_myproxy_upload.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_myproxy_upload.py @@ -35,7 +35,7 @@ def showVersion(self, arg): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): params = Params() self.registerSwitch("f:", "file=", "File to use as proxy", params.setProxyLocation) @@ -67,4 +67,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py b/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py index e0ac685be1c..c95561a8312 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py @@ -39,7 +39,7 @@ def setExcludedHosts(value): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global excludedHosts self.registerSwitch( "e:", @@ -208,4 +208,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py index 1a53fe66d58..68a4bbbcb8f 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py @@ -174,7 +174,7 @@ def run(self): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): try: retval = run(self) DIRAC.exit(retval) @@ -184,4 +184,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 dd986061dd3..a370e313b2e 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_get_uploaded_info.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_get_uploaded_info.py @@ -47,7 +47,7 @@ def setUser(arg): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global userName self.registerSwitch("u:", "user=", "User to query (by default oneself)", setUser) self.parseCommandLine() @@ -115,4 +115,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py index 43bb4fbacdc..f1a74a51d28 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py @@ -76,7 +76,7 @@ def setManagerInfo(self, arg): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): params = Params() self.registerSwitch("f:", "file=", "File to use as user key", params.setProxyLocation) self.registerSwitch("i", "version", "Print version", params.showVersion) @@ -181,4 +181,4 @@ def invalidProxy(msg): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py index deb295a3988..adec47c3ed7 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py @@ -250,7 +250,7 @@ def doTheMagic(self): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): piParams = Params() self.registerSwitches(piParams.switches) self.disableCS() @@ -270,4 +270,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py index 809c6c25c54..fb036b6962b 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.disableCS() self.parseCommandLine() args = self.getPositionalArgs() @@ -48,4 +48,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py index 525ea4d4fe7..8d3fef5ea49 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.disableCS() self.parseCommandLine() args = self.getPositionalArgs() @@ -48,4 +48,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py index 8c91b048912..5177d6efe63 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py @@ -25,7 +25,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.disableCS() self.parseCommandLine() args = self.getPositionalArgs() @@ -56,4 +56,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py index 084be981665..af8aa47987c 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py @@ -18,7 +18,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.disableCS() self.parseCommandLine() args = self.getPositionalArgs() @@ -49,4 +49,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py b/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py index 06be947aa47..4581204efbb 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py @@ -36,7 +36,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -91,4 +91,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py index 4e9f2b191ec..98f62df7b62 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py @@ -35,7 +35,7 @@ def setForce(opVal): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global force from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller @@ -94,4 +94,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py index e3d32474d86..9df12521b39 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py @@ -50,7 +50,7 @@ def addProperty(self, arg): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): params = Params(self) self.registerSwitch('G:', 'GroupName:', 'Name of the Group (Mandatory)', params.setGroupName) self.registerSwitch( @@ -109,4 +109,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py index ae429b47115..42dc48f523c 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py @@ -54,7 +54,7 @@ def addProperty(self, arg): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): params = Params(self) self.registerSwitches(params.switches) self.parseCommandLine(ignoreErrors=True) @@ -113,4 +113,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py index e7ad067b3ab..812b8a5dc6c 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py @@ -56,7 +56,7 @@ def addUserGroup(self, arg): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): params = Params(self) self.registerSwitch('N:', 'UserName:', 'Short Name of the User (Mandatory)', params.setUserName) self.registerSwitch('D:', 'UserDN:', 'DN of the User Certificate (Mandatory)', params.setUserDN) @@ -109,4 +109,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py b/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py index 5901a5a5d1a..a9c4fcff65c 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py @@ -28,7 +28,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("E:", "email=", "Boolean True/False (True by default)") self.parseCommandLine(ignoreErrors=True) @@ -104,4 +104,4 @@ def getBoolean(value): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py b/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py index eeda2324c88..9e1af788137 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py @@ -28,7 +28,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("E:", "email=", "Boolean True/False (True by default)") self.parseCommandLine(ignoreErrors=True) @@ -106,4 +106,4 @@ def getBoolean(value): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py b/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py index 9ffe2921a97..4ba74623b84 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py @@ -26,7 +26,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -50,4 +50,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py b/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py index 80068a6f471..d773cc91d44 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py @@ -27,7 +27,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -64,4 +64,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 0e72ce70971..df4df8e11d3 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_banned_sites.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_banned_sites.py @@ -21,7 +21,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) from DIRAC import gLogger, exit as DIRACExit @@ -46,4 +46,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 a4189a380c1..6aac46c51c0 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 @@ -25,7 +25,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -59,4 +59,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 b327ab3ebea..24704f2d266 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_job_pilots.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_job_pilots.py @@ -44,7 +44,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -78,4 +78,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 43998f32c14..1fe51ea2778 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_info.py @@ -52,7 +52,7 @@ def setExtendedPrint(self, _arg): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): params = Params() self.registerSwitch('e', 'extended', 'Get extended printout', params.setExtendedPrint) self.parseCommandLine(ignoreErrors=True) @@ -118,4 +118,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 7327099c077..b334b681c8e 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 @@ -43,7 +43,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -74,4 +74,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 ce40ce4f311..e6efeb96e3d 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_output.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_output.py @@ -27,7 +27,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -54,4 +54,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 118a8417758..36a9fee1def 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_site_mask.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_site_mask.py @@ -28,7 +28,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) from DIRAC import exit as DIRACExit, gLogger @@ -47,4 +47,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py b/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py index 83b71e894f0..1751ba2b750 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py @@ -22,7 +22,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("e", "extended", "Show extended info") self.parseCommandLine(ignoreErrors=True) @@ -54,4 +54,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py b/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py index de55469736e..03e9ceaf9b1 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py @@ -29,7 +29,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("e", "extended", "Show extended info") self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -83,4 +83,4 @@ def describeUsersInGroup(group=False): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py b/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py index 2adb6acd278..cb68e076734 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py @@ -28,7 +28,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("p:", "property=", "Add property to the user =") self.registerSwitch("f", "force", "create the user if it doesn't exist") self.parseCommandLine(ignoreErrors=True) @@ -80,4 +80,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py b/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py index 4481699b90a..fcdf77fd3f7 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py @@ -37,7 +37,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -53,4 +53,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py b/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py index 03a4a70b9a0..a1c05f1024a 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py @@ -27,7 +27,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -63,4 +63,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py b/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py index 818204240a5..bc31130f00f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py @@ -34,7 +34,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -53,4 +53,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 1beb5fa0eca..c994f8c54dd 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_set_site_protocols.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_set_site_protocols.py @@ -26,7 +26,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("", "Site=", "Site for which protocols are to be set (mandatory)") self.parseCommandLine(ignoreErrors=True) @@ -52,4 +52,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py b/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py index bf17c86c36a..8b6ab5dfd8c 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py @@ -32,7 +32,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -58,4 +58,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 aa02e03e351..bae322a5af6 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_site_mask_logging.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_site_mask_logging.py @@ -28,7 +28,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -53,4 +53,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 5eade5b269a..526556c1e8c 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 @@ -27,7 +27,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("t", "test", "Only test. Don't commit changes") self.parseCommandLine(ignoreErrors=True) @@ -69,4 +69,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py b/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py index aa1663ae02c..fa7ec66d9f2 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py @@ -28,7 +28,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) lfns = self.getPositionalArgs() @@ -55,4 +55,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py index e70e0c15125..bdbc8d9c240 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py @@ -31,7 +31,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -69,4 +69,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py index 3be618a68ae..5f6943c63a3 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py @@ -40,7 +40,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) lfns = self.getPositionalArgs() @@ -68,4 +68,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py index 0ec36b65408..005096885a0 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py @@ -29,7 +29,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch('a', "All", " Also show inactive replicas") self.parseCommandLine(ignoreErrors=True) lfns = self.getPositionalArgs() @@ -63,4 +63,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py index 17b1e0843d4..3c57f59daa9 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py @@ -24,7 +24,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -56,4 +56,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py index 02d596971b9..8f5afd0733e 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py @@ -24,7 +24,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -57,4 +57,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py b/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py index 16961a7a28e..3d3207db4cb 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py @@ -32,7 +32,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -76,4 +76,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py b/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py index e17ac92032e..9aba1b06ab6 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py +++ b/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py @@ -49,7 +49,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() system = None @@ -89,4 +89,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py b/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py index 037e3c2c3c3..000cc1e348f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py +++ b/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py @@ -19,7 +19,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): with open(os.devnull, 'w') as redirectStdout, open(os.devnull, 'w') as redirectStderr: from DIRAC import gLogger from DIRAC.ConfigurationSystem.Client.ConfigurationData import gConfigurationData @@ -34,4 +34,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py b/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py index 874d901b60f..a8b67b85ba3 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py +++ b/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py @@ -19,7 +19,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=False) args = self.getPositionalArgs() @@ -40,4 +40,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py b/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py index 2881965e004..75d9bda83e3 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py +++ b/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py @@ -25,7 +25,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=False) files = self.getPositionalArgs() if len(files) == 0: @@ -48,4 +48,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py b/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py index 6b07e2010b3..37f614dfe93 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py +++ b/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py @@ -26,7 +26,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=False) files = self.getPositionalArgs() if len(files) == 0: @@ -53,4 +53,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 49b0164cdfa..13e10e8c3eb 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 @@ -31,7 +31,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -54,4 +54,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 1c241786673..67273545a55 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_get_queue_normalization.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_get_queue_normalization.py @@ -26,7 +26,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -52,4 +52,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py index 08100999c7b..be32a974478 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py @@ -60,7 +60,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -86,4 +86,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py index 807eba52576..1a177f21490 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py @@ -28,7 +28,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("f:", "File=", "Get output for jobs with IDs from the file") self.registerSwitch("g:", "JobGroup=", "Get output for jobs in the given group") @@ -78,4 +78,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 350366376c1..80ef086db00 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_input.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_input.py @@ -29,7 +29,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("D:", "Dir=", "Store the output in this directory") self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -64,4 +64,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 6ed8b5366ec..926546b35e0 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_jdl.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_jdl.py @@ -43,7 +43,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): original = False self.registerSwitch('O', 'Original', 'Gets the original JDL') self.parseCommandLine(ignoreErrors=True) @@ -79,4 +79,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 32ad95cfc8b..dddaf681473 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output.py @@ -30,7 +30,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("D:", "Dir=", "Store the output in this directory") self.registerSwitch("f:", "File=", "Get output for jobs with IDs from the file") self.registerSwitch("g:", "JobGroup=", "Get output for jobs in the given group") @@ -125,4 +125,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 a59afcd49ae..5957b340f00 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 @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("D:", "Dir=", "Store the output in this directory") self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -57,4 +57,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py index 085eaf95f7e..2f039b87a86 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py @@ -39,7 +39,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -60,4 +60,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 cd955ccc6f2..c11de42eb9f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_logging_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_logging_info.py @@ -41,7 +41,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -67,4 +67,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py index a66d093140c..e8173944b2f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py @@ -51,7 +51,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -77,4 +77,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py index 42226b3cadb..533a51e26c2 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py @@ -26,7 +26,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -52,4 +52,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py index 756e7c9c5ad..1051ad78c37 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py @@ -27,7 +27,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -54,4 +54,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py index bfadfe52c3e..8add8251fe2 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py @@ -27,7 +27,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("f:", "File=", "Get status for jobs with IDs from the file") self.registerSwitch("g:", "JobGroup=", "Get status for jobs in the given group") @@ -78,4 +78,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py index 7e7e8a3ea30..a6e9cbd4976 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py @@ -29,7 +29,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("f:", "File=", "Writes job ids to file ") self.registerSwitch("r:", "UseJobRepo=", "Use the job repository") self.parseCommandLine(ignoreErrors=True) @@ -86,4 +86,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 06677e2cff6..cec738e08f1 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 @@ -26,7 +26,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("", "Status=", "Primary status") self.registerSwitch("", "MinorStatus=", "Secondary status") self.registerSwitch("", "ApplicationStatus=", "Application status") @@ -116,4 +116,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py b/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py index 472e6b8dc6f..cbd1ad3f94a 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py @@ -24,7 +24,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): maxJobs = 100 self.registerSwitch("", "Status=", "Primary status") self.registerSwitch("", "MinorStatus=", "Secondary status") @@ -139,4 +139,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py index ba0f17b0135..09c242092f9 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient @@ -82,4 +82,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py index 7898c4d2dc3..fa07f77953d 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient @@ -42,4 +42,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py index fce88bf8217..782555dc266 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py @@ -21,7 +21,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient @@ -46,4 +46,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py index f70242f32cd..79efc0f8da4 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC.Core.Utilities.PrettyPrint import printTable @@ -74,4 +74,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py index 2b28dc34ea3..48aa09ef32b 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py @@ -18,7 +18,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient @@ -61,4 +61,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py index ec0e8c9b7c5..442b70d4e5d 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient @@ -51,4 +51,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py index 8f20ce7084f..72b33bc08da 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py @@ -24,7 +24,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient @@ -100,4 +100,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py index 9144f258931..d9b4a48f34f 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient @@ -48,4 +48,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py index 635e2cabe3a..b51b06c2b27 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient @@ -48,4 +48,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 7b9a700c68b..ddd541cac3d 100755 --- a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_list_req_cache.py +++ b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_list_req_cache.py @@ -17,7 +17,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch('', 'Full', ' Print full list of requests') from DIRAC.Core.Base.Script import parseCommandLine parseCommandLine() @@ -48,4 +48,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py index 16de1d34eec..deb62c3a4ee 100755 --- a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py +++ b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py @@ -16,7 +16,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): from DIRAC.Core.Base.Script import parseCommandLine parseCommandLine() @@ -55,4 +55,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py index fa624f30b54..eb3c8be45e7 100755 --- a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py +++ b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py @@ -36,7 +36,7 @@ def convertDate(date): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): from DIRAC.Core.Base import Script self.registerSwitch('', 'Job=', ' JobID[,jobID2,...]') self.registerSwitch('', 'Transformation=', ' transformation ID') @@ -286,4 +286,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py index 93191878401..101e2e4bdb4 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py @@ -158,7 +158,7 @@ def run(): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global subLogger global switchDict subLogger = gLogger.getSubLogger(__file__) @@ -176,4 +176,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py index fdc6f09f223..ac374b82ef5 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py @@ -417,7 +417,7 @@ def run(args, switchDictSet): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global subLogger subLogger = gLogger.getSubLogger(__file__) @@ -438,4 +438,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py index 9b48552eca4..6fcd1c42ba0 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py @@ -341,7 +341,7 @@ def run(args, switchDict): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global subLogger global ResourceManagementClient @@ -365,4 +365,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_status.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_status.py index 07d95306291..64090db79ef 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_status.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_status.py @@ -242,7 +242,7 @@ def run(switchDict): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global subLogger global registerUsageMessage @@ -263,4 +263,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py index 592a34acec6..c2bd96e7add 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py @@ -180,7 +180,7 @@ def setToken(user): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): """ Main function of the script. Gets the username from the proxy loaded and sets the token taking into account that user and the switchDict parameters. @@ -211,4 +211,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py index 0cdc69f5278..4efd41d6c1c 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py @@ -252,7 +252,7 @@ def run(): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global subLogger global switchDict global DEFAULT_STATUS @@ -271,4 +271,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py b/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py index b4aa4e0e7d3..660f4666b6f 100755 --- a/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py +++ b/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py @@ -21,7 +21,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global ceName global Queue global Site @@ -56,4 +56,4 @@ def setQueue(args): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Resources/scripts/dirac_resource_info.py b/src/DIRAC/Resources/scripts/dirac_resource_info.py index a06e9ea66e2..72d345dba43 100644 --- a/src/DIRAC/Resources/scripts/dirac_resource_info.py +++ b/src/DIRAC/Resources/scripts/dirac_resource_info.py @@ -17,7 +17,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): from DIRAC import S_OK, gLogger, gConfig, exit as DIRACExit @@ -158,4 +158,4 @@ def printSEInfo(voName): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py index 0393dfd7b84..c045d5c7131 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py @@ -31,7 +31,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() if len(args) < 2: @@ -94,7 +94,7 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter ''' Example: diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py index 59370a0a659..7f927087250 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=False) args = self.getPositionalArgs() @@ -76,7 +76,7 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter ''' Example: diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py index 1741421f1ee..df8aad08d36 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=False) args = self.getPositionalArgs() @@ -67,4 +67,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py index f2ae506a6cf..7b6961c7e0a 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py @@ -44,7 +44,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): subLogger = gLogger.getSubLogger(__file__) switches = (('status=', 'Filter per file status=(New, Offline, Waiting, Failed, StageSubmitted, Staged).' @@ -157,4 +157,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py index 17459cce194..3e0bb838ab7 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py @@ -33,7 +33,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=False) from DIRAC.StorageManagementSystem.Client.StorageManagerClient import StorageManagerClient client = StorageManagerClient() @@ -77,4 +77,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py index 5d7f8d789c4..04f705fabe8 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_stage_files.py @@ -40,7 +40,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -87,4 +87,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py b/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py index 1180309d4c5..50ca832a36a 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py @@ -136,7 +136,7 @@ def __runJobLocally(jobID, basepath, vo): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=False) self.registerSwitch('D:', 'Download=', 'Defines data acquisition as DownloadInputData') self.registerSwitch('P:', 'Protocol=', 'Defines data acquisition as InputDataByProtocol') @@ -176,4 +176,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py index 40fedc307d2..95409a9d4c6 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py @@ -18,7 +18,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient @@ -62,4 +62,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py index 2c451e5911d..5dcbdf09805 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py @@ -16,7 +16,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() args = self.getPositionalArgs() @@ -39,4 +39,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py index 7a7b1b1422f..3a2a03987f6 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py @@ -16,7 +16,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() args = self.getPositionalArgs() @@ -39,4 +39,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py index 664b974994e..0329b5f72f9 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py @@ -11,7 +11,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=False) from DIRAC.TransformationSystem.Client.TransformationCLI import TransformationCLI @@ -21,4 +21,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py index 36dadb05579..c7769a61c2e 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py @@ -18,7 +18,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient @@ -39,4 +39,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py index 004f9e9c346..8376a709c75 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py @@ -34,7 +34,7 @@ def setTransID(self, transID): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): PARAMS = Params() self.registerSwitches(PARAMS.switches) self.parseCommandLine(ignoreErrors=False) @@ -60,4 +60,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py index 2741286c827..079f008c611 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py @@ -17,7 +17,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() args = self.getPositionalArgs() @@ -40,4 +40,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_replication.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_replication.py index 297486e4569..08371696c08 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_replication.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_replication.py @@ -17,7 +17,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): """reads command line parameters, makes check and creates replication transformation""" from DIRAC import gLogger, exit as dexit from DIRAC.TransformationSystem.Utilities.ReplicationCLIParameters import Params @@ -52,4 +52,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py index 11400668f23..26a3bb15211 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py @@ -16,7 +16,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine() args = self.getPositionalArgs() @@ -39,4 +39,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py index bfa6dc99c0b..cd65cfd237d 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py @@ -20,7 +20,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -43,4 +43,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter 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 e656e2f9773..90a5d855fa0 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_pilot_logging_info.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_pilot_logging_info.py @@ -40,7 +40,7 @@ def setJobID(optVal): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global uuid global jobid self.registerSwitch('u:', 'uuid=', 'get PilotsLogging for given Pilot UUID', setUUID) @@ -67,4 +67,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_show_task_queues.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_show_task_queues.py index 982cd09a751..5544cb68cb4 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_show_task_queues.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_show_task_queues.py @@ -57,7 +57,7 @@ def setTaskQueueID(optVal): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global verbose global taskQueueID self.registerSwitch("v", "verbose", "give max details about task queues", setVerbose) @@ -122,4 +122,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_sync_pilot.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_sync_pilot.py index b1bec783c67..a23fde53b59 100644 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_sync_pilot.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_sync_pilot.py @@ -30,7 +30,7 @@ def setNoMasterCS(optVal): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global includeMasterCS self.registerSwitch("n", "noMasterCS", "do not include master CS", setNoMasterCS) self.parseCommandLine() @@ -85,4 +85,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_jobexec.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_jobexec.py index 0558c10c2c5..154aaf44980 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_jobexec.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_jobexec.py @@ -24,7 +24,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): # Register workflow parameter switch self.registerSwitch('p:', 'parameter=', 'Parameters that are passed directly to the workflow') self.parseCommandLine() @@ -108,4 +108,4 @@ def jobexec(jobxml, wfParameters): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_cpu_normalization.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_cpu_normalization.py index 239f24d74f6..f31f77f3438 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_cpu_normalization.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_cpu_normalization.py @@ -30,7 +30,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("U", "Update", "Update dirac.cfg with the resulting value") self.registerSwitch("R:", "Reconfig=", "Update given configuration file with the resulting value") self.parseCommandLine(ignoreErrors=True) @@ -69,4 +69,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_queue_cpu_time.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_queue_cpu_time.py index c2cfaee8859..6dce187283c 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_queue_cpu_time.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_queue_cpu_time.py @@ -18,7 +18,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): self.registerSwitch("C:", "CPUNormalizationFactor=", "CPUNormalizationFactor, in case it is known") self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -36,4 +36,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn.py index f71682d6353..7f3ecf6239f 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn.py @@ -23,7 +23,7 @@ @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): site = 'BOINC.World.org' status = ["Running"] minorStatus = None @@ -195,4 +195,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn_parameters.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn_parameters.py index 81e79891b0f..0299ba88fa8 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn_parameters.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_get_wn_parameters.py @@ -34,7 +34,7 @@ def setQueue(args): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global ceName global Site global Queue @@ -60,4 +60,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_match.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_match.py index 160938aa6b0..20bf43f25eb 100644 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_match.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_match.py @@ -37,7 +37,7 @@ def setSites(optVal_): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): global fullMatch global sites self.registerSwitch("F", "full-match", "Check all the matching criteria", setFullMatch) @@ -114,4 +114,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_pilot_job_info.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_pilot_job_info.py index a70f05b000a..d2356781429 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_pilot_job_info.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_wms_pilot_job_info.py @@ -31,7 +31,7 @@ def _stringInList(subStr, sList): @DIRACScript() -def main(self): # pylint: disable=no-value-for-parameter +def main(self): parameters = ['OwnerDN', 'StartExecTime', 'EndExecTime'] self.registerSwitch('', 'Parameters=', ' List of strings to be matched by job parameters or attributes') self.parseCommandLine(ignoreErrors=True) @@ -89,4 +89,4 @@ def main(self): # pylint: disable=no-value-for-parameter if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter From 9bc0b31a012d08406331ee23082084b2993402da Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Mon, 15 Mar 2021 02:38:53 +0100 Subject: [PATCH 08/43] fix pylint --- .../scripts/dirac_admin_add_host.py | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py index 42dc48f523c..c6f0e91a225 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py @@ -36,21 +36,21 @@ def __init__(self, script): self.addProperty) ] - def setHostName(self, arg): - if self.hostName or not arg: - self.__script.showHelp(exitCode=1) - self.hostName = arg - - def setHostDN(self, arg): - if self.hostDN or not arg: - self.__script.showHelp(exitCode=1) - self.hostDN = arg - - def addProperty(self, arg): - if not arg: - self.__script.showHelp(exitCode=1) - if arg not in self.hostProperties: - self.hostProperties.append(arg) + def setHostName(self, arg): + if self.hostName or not arg: + self.__script.showHelp(exitCode=1) + self.hostName = arg + + def setHostDN(self, arg): + if self.hostDN or not arg: + self.__script.showHelp(exitCode=1) + self.hostDN = arg + + def addProperty(self, arg): + if not arg: + self.__script.showHelp(exitCode=1) + if arg not in self.hostProperties: + self.hostProperties.append(arg) @DIRACScript() From 64d17129eeadacc1b679751beafc09483f6744c9 Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Mon, 15 Mar 2021 02:40:19 +0100 Subject: [PATCH 09/43] fix pylint --- .../FrameworkSystem/scripts/dirac_admin_users_with_proxy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 e346860e256..bb8810d4092 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_users_with_proxy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_users_with_proxy.py @@ -52,7 +52,7 @@ def setProxyLifeTime(self, arg): @DIRACScript() def main(self): params = Params() - self.registerSwitch(("v:", "valid=", "Required HH:MM for the users", params.setProxyLifeTime)) + self.registerSwitch("v:", "valid=", "Required HH:MM for the users", params.setProxyLifeTime) self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() result = gProxyManager.getDBContents() From f88dcfd9a8604b83e59f696cfdd56de6927563b5 Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Mon, 15 Mar 2021 03:56:58 +0100 Subject: [PATCH 10/43] fix pylint --- .../scripts/dirac_accounting_decode_fileid.py | 2 +- .../scripts/dirac_admin_add_resources.py | 2 +- src/DIRAC/Core/scripts/dirac_configure.py | 25 - .../scripts/dirac_admin_add_user.py | 6 +- .../scripts/dirac_rss_query_db.py | 298 ++++++++-- .../scripts/dirac_rss_query_dtcache.py | 560 +++++++++--------- 6 files changed, 522 insertions(+), 371 deletions(-) diff --git a/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py b/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py index a118a941210..b78d1e893ff 100755 --- a/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py +++ b/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py @@ -53,4 +53,4 @@ def main(self): if __name__ == "__main__": - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py index 229671a3a1b..665e1ae5681 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py @@ -289,4 +289,4 @@ def main(self): doCEs = False ceBdiiDict = None - main() + main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/Core/scripts/dirac_configure.py b/src/DIRAC/Core/scripts/dirac_configure.py index d02f9407564..8a5b57de8e6 100755 --- a/src/DIRAC/Core/scripts/dirac_configure.py +++ b/src/DIRAC/Core/scripts/dirac_configure.py @@ -9,31 +9,6 @@ To be used by VO specific scripts to configure new DIRAC installations - There are 2 mandatory arguments: - - -S --Setup= To define the DIRAC setup for the current installation - -C --ConfigurationServer=|-W --Gateway To define the reference Configuration Servers/Gateway - for the current installation - - others are optional - - -I --IncludeAllServers To include all Configuration Servers - (by default only those in -C option are included) - -n --SiteName= To define the DIRAC Site Name for the installation - -N --CEName= To determine the DIRAC Site Name from the CE Name - -V --VO= To define the VO for the installation - -U --UseServerCertificate To use Server Certificate for all clients - -H --SkipCAChecks To skip check of CAs for all clients - -D --SkipCADownload To skip download of CAs - -M --SkipVOMSDownload To skip download of VOMS info - -v --UseVersionsDir Use versions directory - (This option will properly define RootPath and InstancePath) - -A --Architecture= To define /LocalSite/Architecture= - -L --LocalSE= To define /LocalSite/LocalSE= - -F --ForceUpdate Forces the update of cfg file (i.e. dirac.cfg), - even if it does already exists (use with care) - -O --Output define output configuration file - Other arguments will take proper defaults if not defined. Additionally all options can all be passed inside a .cfg file passed as argument. diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py index 812b8a5dc6c..7a29067a6ec 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py @@ -44,7 +44,7 @@ def setUserMail(self, arg): if self.userMail or not arg: self.__script.showHelp(exitCode=1) if not arg.find('@') > 0: - self.gLogger.error('Not a valid mail address', arg) + self.__script.gLogger.error('Not a valid mail address', arg) DIRAC.exit(-1) self.userMail = arg @@ -90,7 +90,7 @@ def main(self): else: pName = pl[0] pValue = "=".join(pl[1:]) - self.gLogger.info("Setting property %s to %s" % (pName, pValue)) + self.__script.gLogger.info("Setting property %s to %s" % (pName, pValue)) userProps[pName] = pValue if not diracAdmin.csModifyUser(params.userName, userProps, createIfNonExistant=True)['OK']: @@ -103,7 +103,7 @@ def main(self): exitCode = 255 for error in errorList: - self.gLogger.error("%s: %s" % error) + self.__script.gLogger.error("%s: %s" % error) DIRAC.exit(exitCode) diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py index ac374b82ef5..3424a4825c4 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py @@ -201,69 +201,250 @@ def unpack(switchDict): switchDictSet.append(switchDictClone) elif not names and statusTypes: for statusType in statusTypes: + if statusType not in acceptableStatusTypes and statusType != 'all': + acceptableStatusTypes.append('all') + self.error("'%s' is a wrong value for switch 'statusType'.\n\tThe acceptable values are:\n\t%s" + % (statusType, str(acceptableStatusTypes))) + + if 'all' in statusType: + return acceptableStatusTypes + return statusTypes + + + def unpack(self, switchDict): + """ + To split and process comma-separated list of values for 'name' and 'statusType' + """ + + switchDictSet = [] + names = [] + statusTypes = [] + + if switchDict['name'] is not None: + names = filter(None, switchDict['name'].split(',')) + + if switchDict['statusType'] is not None: + statusTypes = filter(None, switchDict['statusType'].split(',')) + statusTypes = self.checkStatusTypes(statusTypes) + + if names and statusTypes: + combinations = [(a, b) for a in names for b in statusTypes] + for combination in combinations: + n, s = combination + switchDictClone = switchDict.copy() + switchDictClone['name'] = n + switchDictClone['statusType'] = s + switchDictSet.append(switchDictClone) + elif names and not statusTypes: + for name in names: + switchDictClone = switchDict.copy() + switchDictClone['name'] = name + switchDictSet.append(switchDictClone) + elif not names and statusTypes: + for statusType in statusTypes: + switchDictClone = switchDict.copy() + switchDictClone['statusType'] = statusType + switchDictSet.append(switchDictClone) + elif not names and not statusTypes: switchDictClone = switchDict.copy() - switchDictClone['statusType'] = statusType + switchDictClone['name'] = None + switchDictClone['statusType'] = None switchDictSet.append(switchDictClone) - elif not names and not statusTypes: - switchDictClone = switchDict.copy() - switchDictClone['name'] = None - switchDictClone['statusType'] = None - switchDictSet.append(switchDictClone) - return switchDictSet + return switchDictSet -# UTILS: for filtering 'select' output + # UTILS: for filtering 'select' output -def filterReason(selectOutput, reason): - """ - Selects all the elements that match 'reason' - """ + def filterReason(self, selectOutput, reason): + """ + Selects all the elements that match 'reason' + """ - elements = selectOutput - elementsFiltered = [] - if reason is not None: - for e in elements: - if reason in e['reason']: - elementsFiltered.append(e) - else: - elementsFiltered = elements + elements = selectOutput + elementsFiltered = [] + if reason is not None: + for e in elements: + if reason in e['reason']: + elementsFiltered.append(e) + else: + elementsFiltered = elements - return elementsFiltered + return elementsFiltered -# Utils: for formatting query output and notifications + # Utils: for formatting query output and notifications -def error(msg): - """ - Format error messages - """ + def error(self, msg): + """ + Format error messages + """ - subLogger.error("\nERROR:") - subLogger.error("\t" + msg) - subLogger.error("\tPlease, check documentation below") - self.showHelp(exitCode=1) + self.subLogger.error("\nERROR:") + self.subLogger.error("\t" + msg) + self.subLogger.error("\tPlease, check documentation below") + self.__script.showHelp(exitCode=1) -def confirm(query, matches): - """ - Format confirmation messages - """ - - subLogger.notice("\nNOTICE: '%s' request successfully executed ( matches' number: %s )! \n" % (query, matches)) - + def confirm(self, query, matches): + """ + Format confirmation messages + """ + + self.subLogger.notice("\nNOTICE: '%s' request successfully executed ( matches' number: %s )! \n" % (query, matches)) + + + def tabularPrint(self, table): + + columns_names = list(table[0]) + records = [] + for row in table: + record = [] + for _k, v in row.items(): + if isinstance(v, datetime.datetime): + record.append(Time.toString(v)) + elif v is None: + record.append('') + else: + record.append(v) + records.append(record) -def tabularPrint(table): - - columns_names = list(table[0]) - records = [] - for row in table: - record = [] - for _k, v in row.items(): - if isinstance(v, datetime.datetime): - record.append(Time.toString(v)) - elif v is None: - record.append('') + output = printTable(columns_names, records, numbering=False, + columnSeparator=" | ", printOut=False) + + self.subLogger.notice(output) + + + def select(self, args, switchDict): + """ + Given the switches, request a query 'select' on the ResourceStatusDB + that gets from all rows that match the parameters given. + """ + + rssClient = ResourceStatusClient.ResourceStatusClient() + + meta = {'columns': ['name', 'statusType', 'status', 'elementType', 'reason', + 'dateEffective', 'lastCheckTime', 'tokenOwner', 'tokenExpiration']} + + result = {'output': None, 'successful': None, 'message': None, 'match': None} + output = rssClient.selectStatusElement(element=args[1].title(), + tableType=args[2].title(), + name=switchDict['name'], + statusType=switchDict['statusType'], + status=switchDict['status'], + elementType=switchDict['elementType'], + lastCheckTime=switchDict['lastCheckTime'], + tokenOwner=switchDict['tokenOwner'], + meta=meta) + result['output'] = [dict(zip(output['Columns'], e)) for e in output['Value']] + result['output'] = self.filterReason(result['output'], switchDict['reason']) + result['match'] = len(result['output']) + result['successful'] = output['OK'] + result['message'] = output['Message'] if 'Message' in output else None + + return result + + + def add(self, args, switchDict): + """ + Given the switches, request a query 'addOrModify' on the ResourceStatusDB + that inserts or updates-if-duplicated from and also adds + a log if flag is active. + """ + + rssClient = ResourceStatusClient.ResourceStatusClient() + + result = {'output': None, 'successful': None, 'message': None, 'match': None} + output = rssClient.addOrModifyStatusElement(element=args[1].title(), + tableType=args[2].title(), + name=switchDict['name'], + statusType=switchDict['statusType'], + status=switchDict['status'], + elementType=switchDict['elementType'], + reason=switchDict['reason'], + tokenOwner=self.getToken('owner'), + tokenExpiration=self.getToken('expiration')) + + if output.get('Value'): + result['match'] = int(output['Value'] if output['Value'] else 0) + result['successful'] = output['OK'] + result['message'] = output['Message'] if 'Message' in output else None + + return result + + + def modify(self, args, switchDict): + """ + Given the switches, request a query 'modify' on the ResourceStatusDB + that updates from and also adds a log if flag is active. + """ + + rssClient = ResourceStatusClient.ResourceStatusClient() + + result = {'output': None, 'successful': None, 'message': None, 'match': None} + output = rssClient.modifyStatusElement(element=args[1].title(), + tableType=args[2].title(), + name=switchDict['name'], + statusType=switchDict['statusType'], + status=switchDict['status'], + elementType=switchDict['elementType'], + reason=switchDict['reason'], + tokenOwner=self.getToken('owner'), + tokenExpiration=self.getToken('expiration') + ) + + if output.get('Value'): + result['match'] = int(output['Value'] if output['Value'] else 0) + result['successful'] = output['OK'] + result['message'] = output['Message'] if 'Message' in output else None + + return result + + + def delete(self, args, switchDict): + """ + Given the switches, request a query 'delete' on the ResourceStatusDB + that deletes from all rows that match the parameters given. + """ + + rssClient = ResourceStatusClient.ResourceStatusClient() + + result = {'output': None, 'successful': None, 'message': None, 'match': None} + output = rssClient.deleteStatusElement(element=args[1].title(), + tableType=args[2].title(), + name=switchDict['name'], + statusType=switchDict['statusType'], + status=switchDict['status'], + elementType=switchDict['elementType'], + reason=switchDict['reason'], + tokenOwner=switchDict['tokenOwner']) + + if 'Value' in output: + result['match'] = int(output['Value'] if output['Value'] else 0) + result['successful'] = output['OK'] + result['message'] = output['Message'] if 'Message' in output else None + + return result + + + def run(self, args, switchDictSet): + """ + Main function of the script + """ + query = args[0] + + matches = 0 + table = [] + + for switchDict in switchDictSet: + # exectue the query request: e.g. if it's a 'select' it executes 'select()' + # the same if it is insert, update, add, modify, delete + result = eval('self.' + query + '( args, switchDict )') + + if result['successful']: + if query == 'select' and result['match'] > 0: + table.extend(result['output']) + matches = matches + result['match'] if result['match'] else 0 else: record.append(v) records.append(record) @@ -411,27 +592,24 @@ def run(args, switchDictSet): else: error(result['message']) - if query == 'select' and matches > 0: - tabularPrint(table) - confirm(query, matches) + if query == 'select' and matches > 0: + self.tabularPrint(table) + self.confirm(query, matches) @DIRACScript() def main(self): - global subLogger - - subLogger = gLogger.getSubLogger(__file__) - + params = Params(self) # Script initialization - registerSwitches(self) - registerUsageMessage(self) - args, switchDict = parseSwitches(self) + params.registerSwitches() + params.registerUsageMessage() + args, switchDict = params.parseSwitches() # Unpack switchDict if 'name' or 'statusType' have multiple values - switchDictSet = unpack(switchDict) + switchDictSet = params.unpack(switchDict) # Run script - run(args, switchDictSet) + params.run(args, switchDictSet) # Bye DIRACExit(0) diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py index 6fcd1c42ba0..6a3cedbce1d 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py @@ -29,336 +29,334 @@ from DIRAC.ResourceStatusSystem.Utilities import Utils -subLogger = None +class Params(object): + + def __init__(self, script): + self.__script = script + self.subLogger = gLogger.getSubLogger(__file__) + self.ResourceManagementClient = getattr( + Utils.voimport('DIRAC.ResourceStatusSystem.Client.ResourceManagementClient'), + 'ResourceManagementClient', + ) + + def registerSwitches(self): + """ + Registers all switches that can be used while calling the script from the + command line interface. + """ + + switches = ( + ('downtimeID=', 'ID of the downtime'), + ('element=', 'Element (Site, Service) affected by the downtime'), + ('name=', 'Name of the element'), + ('startDate=', 'Starting date of the downtime'), + ('endDate=', 'Ending date of the downtime'), + ('severity=', 'Severity of the downtime (Warning, Outage)'), + ('description=', 'Description of the downtime'), + ('link=', 'URL of the downtime announcement'), + ('ongoing', 'To force "select" to return the ongoing downtimes') + ) + + for switch in switches: + self.__script.registerSwitch('', switch[0], switch[1]) + + + def registerUsageMessage(self): + """ + Takes the script __doc__ and adds the DIRAC version to it + """ + + usageMessage = 'DIRAC version: %s \n' % version + usageMessage += __doc__ + + self.__script.setUsageMessage(usageMessage) + + + def parseSwitches(self): + """ + Parses the arguments passed by the user + """ + + self.__script.parseCommandLine(ignoreErrors=True) + args = self.__script.getPositionalArgs() + if not args: + self.error("Missing mandatory 'query' argument") + elif not args[0].lower() in ('select', 'add', 'delete'): + self.error("Missing mandatory argument") + else: + query = args[0].lower() + + switches = dict(self.__script.getUnprocessedSwitches()) + + # Default values + switches.setdefault('downtimeID', None) + switches.setdefault('element', None) + switches.setdefault('name', None) + switches.setdefault('startDate', None) + switches.setdefault('endDate', None) + switches.setdefault('severity', None) + switches.setdefault('description', None) + switches.setdefault('link', None) + + if query in ('add', 'delete') and switches['downtimeID'] is None: + self.error("'downtimeID' switch is mandatory for '%s' but found missing" % query) + + if query in ('add', 'delete') and 'ongoing' in switches: + self.error("'ongoing' switch can be used only with 'select'") + + self.subLogger.debug("The switches used are:") + map(self.subLogger.debug, switches.items()) + + return (args, switches) + + # UTILS: for filtering 'select' output + + + def filterDate(self, selectOutput, start, end): + """ + Selects all the downtimes that meet the constraints of 'start' and 'end' dates + """ + + downtimes = selectOutput + downtimesFiltered = [] + + if start is not None: + try: + start = Time.fromString(start) + except BaseException: + self.error("datetime formt is incorrect, pls try [%Y-%m-%d[ %H:%M:%S]]") + start = Time.toEpoch(start) + + if end is not None: + try: + end = Time.fromString(end) + except BaseException: + self.error("datetime formt is incorrect, pls try [%Y-%m-%d[ %H:%M:%S]]") + end = Time.toEpoch(end) + + if start is not None and end is not None: + for dt in downtimes: + dtStart = Time.toEpoch(dt['startDate']) + dtEnd = Time.toEpoch(dt['endDate']) + if (dtStart >= start) and (dtEnd <= end): + downtimesFiltered.append(dt) + + elif start is not None and end is None: + for dt in downtimes: + dtStart = Time.toEpoch(dt['startDate']) + if dtStart >= start: + downtimesFiltered.append(dt) + + elif start is None and end is not None: + for dt in downtimes: + dtEnd = Time.toEpoch(dt['endDate']) + if dtEnd <= end: + downtimesFiltered.append(dt) + else: + downtimesFiltered = downtimes -def registerSwitches(self): - """ - Registers all switches that can be used while calling the script from the - command line interface. - """ + return downtimesFiltered - switches = ( - ('downtimeID=', 'ID of the downtime'), - ('element=', 'Element (Site, Service) affected by the downtime'), - ('name=', 'Name of the element'), - ('startDate=', 'Starting date of the downtime'), - ('endDate=', 'Ending date of the downtime'), - ('severity=', 'Severity of the downtime (Warning, Outage)'), - ('description=', 'Description of the downtime'), - ('link=', 'URL of the downtime announcement'), - ('ongoing', 'To force "select" to return the ongoing downtimes') - ) - for switch in switches: - self.registerSwitch('', switch[0], switch[1]) + def filterOngoing(self, selectOutput): + """ + Selects all the ongoing downtimes + """ + downtimes = selectOutput + downtimesFiltered = [] + currentDate = Time.toEpoch(Time.dateTime()) -def registerUsageMessage(self): - """ - Takes the script __doc__ and adds the DIRAC version to it - """ - - usageMessage = 'DIRAC version: %s \n' % version - usageMessage += __doc__ - - self.setUsageMessage(usageMessage) - - -def parseSwitches(self): - """ - Parses the arguments passed by the user - """ - - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - if not args: - error("Missing mandatory 'query' argument") - elif not args[0].lower() in ('select', 'add', 'delete'): - error("Missing mandatory argument") - else: - query = args[0].lower() - - switches = dict(self.getUnprocessedSwitches()) - - # Default values - switches.setdefault('downtimeID', None) - switches.setdefault('element', None) - switches.setdefault('name', None) - switches.setdefault('startDate', None) - switches.setdefault('endDate', None) - switches.setdefault('severity', None) - switches.setdefault('description', None) - switches.setdefault('link', None) - - if query in ('add', 'delete') and switches['downtimeID'] is None: - error("'downtimeID' switch is mandatory for '%s' but found missing" % query) - - if query in ('add', 'delete') and 'ongoing' in switches: - error("'ongoing' switch can be used only with 'select'") - - subLogger.debug("The switches used are:") - map(subLogger.debug, switches.items()) - - return (args, switches) - -# UTILS: for filtering 'select' output - - -def filterDate(selectOutput, start, end): - """ - Selects all the downtimes that meet the constraints of 'start' and 'end' dates - """ - - downtimes = selectOutput - downtimesFiltered = [] - - if start is not None: - try: - start = Time.fromString(start) - except Exception: - error("datetime formt is incorrect, pls try [%Y-%m-%d[ %H:%M:%S]]") - start = Time.toEpoch(start) - - if end is not None: - try: - end = Time.fromString(end) - except Exception: - error("datetime formt is incorrect, pls try [%Y-%m-%d[ %H:%M:%S]]") - end = Time.toEpoch(end) - - if start is not None and end is not None: for dt in downtimes: dtStart = Time.toEpoch(dt['startDate']) dtEnd = Time.toEpoch(dt['endDate']) - if (dtStart >= start) and (dtEnd <= end): + if (dtStart <= currentDate) and (dtEnd >= currentDate): downtimesFiltered.append(dt) - elif start is not None and end is None: - for dt in downtimes: - dtStart = Time.toEpoch(dt['startDate']) - if dtStart >= start: - downtimesFiltered.append(dt) + return downtimesFiltered - elif start is None and end is not None: - for dt in downtimes: - dtEnd = Time.toEpoch(dt['endDate']) - if dtEnd <= end: - downtimesFiltered.append(dt) - - else: - downtimesFiltered = downtimes - return downtimesFiltered + def filterDescription(self, electOutput, description): + """ + Selects all the downtimes that match 'description' + """ + downtimes = selectOutput + downtimesFiltered = [] + if description is not None: + for dt in downtimes: + if description in dt['description']: + downtimesFiltered.append(dt) + else: + downtimesFiltered = downtimes -def filterOngoing(selectOutput): - """ - Selects all the ongoing downtimes - """ + return downtimesFiltered - downtimes = selectOutput - downtimesFiltered = [] - currentDate = Time.toEpoch(Time.dateTime()) + # Utils: for formatting query output and notifications - for dt in downtimes: - dtStart = Time.toEpoch(dt['startDate']) - dtEnd = Time.toEpoch(dt['endDate']) - if (dtStart <= currentDate) and (dtEnd >= currentDate): - downtimesFiltered.append(dt) - return downtimesFiltered + def error(self, msg): + """ + Format error messages + """ + self.subLogger.error("\nERROR:") + self.subLogger.error("\t" + msg) + self.subLogger.error("\tPlease, check documentation below") + self.__script.showHelp(exitCode=1) -def filterDescription(selectOutput, description): - """ - Selects all the downtimes that match 'description' - """ - downtimes = selectOutput - downtimesFiltered = [] - if description is not None: - for dt in downtimes: - if description in dt['description']: - downtimesFiltered.append(dt) - else: - downtimesFiltered = downtimes + def confirm(self, query, matches): + """ + Format confirmation messages + """ - return downtimesFiltered + self.subLogger.notice("\nNOTICE: '%s' request successfully executed ( matches' number: %s )! \n" % (query, matches)) -# Utils: for formatting query output and notifications + def tabularPrint(self, table): + + columns_names = list(table[0]) + records = [] + for row in table: + record = [] + for k, v in row.items(): + if isinstance(v, datetime.datetime): + record.append(Time.toString(v)) + elif v is None: + record.append('') + else: + record.append(v) + records.append(record) -def error(msg): - """ - Format error messages - """ + output = printTable(columns_names, records, numbering=False, + columnSeparator=" | ", printOut=False) - subLogger.error("\nERROR:") - subLogger.error("\t" + msg) - subLogger.error("\tPlease, check documentation below") - self.showHelp(exitCode=1) + self.subLogger.notice(output) -def confirm(query, matches): - """ - Format confirmation messages - """ + def select(self, switchDict): + """ + Given the switches, request a query 'select' on the ResourceManagementDB + that gets from DowntimeCache all rows that match the parameters given. + """ - subLogger.notice("\nNOTICE: '%s' request successfully executed ( matches' number: %s )! \n" % (query, matches)) + rmsClient = self.ResourceManagementClient() + meta = {'columns': ['DowntimeID', 'Element', 'Name', 'StartDate', 'EndDate', + 'Severity', 'Description', 'Link', 'DateEffective']} -def tabularPrint(table): - - columns_names = list(table[0]) - records = [] - for row in table: - record = [] - for k, v in row.items(): - if isinstance(v, datetime.datetime): - record.append(Time.toString(v)) - elif v is None: - record.append('') - else: - record.append(v) - records.append(record) + result = {'output': None, 'OK': None, 'Message': None, 'match': None} + output = rmsClient.selectDowntimeCache(downtimeID=switchDict['downtimeID'], + element=switchDict['element'], + name=switchDict['name'], + severity=switchDict['severity'], + meta=meta) - output = printTable(columns_names, records, numbering=False, - columnSeparator=" | ", printOut=False) + if not output['OK']: + return output + result['output'] = [dict(zip(output['Columns'], dt)) for dt in output['Value']] + if 'ongoing' in switchDict: + result['output'] = self.filterOngoing(result['output']) + else: + result['output'] = self.filterDate(result['output'], switchDict['startDate'], switchDict['endDate']) + result['output'] = self.filterDescription(result['output'], switchDict['description']) + result['match'] = len(result['output']) + result['OK'] = True + result['message'] = output['Message'] if 'Message' in output else None - subLogger.notice(output) + return result -def select(switchDict): - """ - Given the switches, request a query 'select' on the ResourceManagementDB - that gets from DowntimeCache all rows that match the parameters given. - """ + def add(self, switchDict): + """ + Given the switches, request a query 'addOrModify' on the ResourceManagementDB + that inserts or updates-if-duplicated from DowntimeCache. + """ - rmsClient = ResourceManagementClient() - - meta = {'columns': ['DowntimeID', 'Element', 'Name', 'StartDate', 'EndDate', - 'Severity', 'Description', 'Link', 'DateEffective']} + rmsClient = self.ResourceManagementClient() - result = {'output': None, 'OK': None, 'Message': None, 'match': None} - output = rmsClient.selectDowntimeCache(downtimeID=switchDict['downtimeID'], - element=switchDict['element'], - name=switchDict['name'], - severity=switchDict['severity'], - meta=meta) + result = {'output': None, 'OK': None, 'Message': None, 'match': None} + output = rmsClient.addOrModifyDowntimeCache(downtimeID=switchDict['downtimeID'], + element=switchDict['element'], + name=switchDict['name'], + startDate=switchDict['startDate'], + endDate=switchDict['endDate'], + severity=switchDict['severity'], + description=switchDict['description'], + link=switchDict['link'] + ) - if not output['OK']: - return output - result['output'] = [dict(zip(output['Columns'], dt)) for dt in output['Value']] - if 'ongoing' in switchDict: - result['output'] = filterOngoing(result['output']) - else: - result['output'] = filterDate(result['output'], switchDict['startDate'], switchDict['endDate']) - result['output'] = filterDescription(result['output'], switchDict['description']) - result['match'] = len(result['output']) - result['OK'] = True - result['message'] = output['Message'] if 'Message' in output else None + if not output['OK']: + return output - return result + if output['Value']: + result['match'] = int(output['Value']) + result['OK'] = True + result['message'] = output['Message'] if 'Message' in output else None + + return result + + + def delete(self, switchDict): + """ + Given the switches, request a query 'delete' on the ResourceManagementDB + that deletes from DowntimeCache all rows that match the parameters given. + """ + rmsClient = self.ResourceManagementClient() + + result = {'output': None, 'OK': None, 'Message': None, 'match': None} + output = rmsClient.deleteDowntimeCache(downtimeID=switchDict['downtimeID'], + element=switchDict['element'], + name=switchDict['name'], + startDate=switchDict['startDate'], + endDate=switchDict['endDate'], + severity=switchDict['severity'], + description=switchDict['description'], + link=switchDict['link'] + ) + if not output['OK']: + return output + + if output['Value']: + result['match'] = int(output['Value']) + result['OK'] = True + result['Message'] = output['Message'] if 'Message' in output else None + + return result + + + def run(self, args, switchDict): + """ + Main function of the script + """ -def add(switchDict): - """ - Given the switches, request a query 'addOrModify' on the ResourceManagementDB - that inserts or updates-if-duplicated from DowntimeCache. - """ - - rmsClient = ResourceManagementClient() - - result = {'output': None, 'OK': None, 'Message': None, 'match': None} - output = rmsClient.addOrModifyDowntimeCache(downtimeID=switchDict['downtimeID'], - element=switchDict['element'], - name=switchDict['name'], - startDate=switchDict['startDate'], - endDate=switchDict['endDate'], - severity=switchDict['severity'], - description=switchDict['description'], - link=switchDict['link'] - ) - - if not output['OK']: - return output - - if output['Value']: - result['match'] = int(output['Value']) - result['OK'] = True - result['message'] = output['Message'] if 'Message' in output else None - - return result - - -def delete(switchDict): - """ - Given the switches, request a query 'delete' on the ResourceManagementDB - that deletes from DowntimeCache all rows that match the parameters given. - """ - - rmsClient = ResourceManagementClient() - - result = {'output': None, 'OK': None, 'Message': None, 'match': None} - output = rmsClient.deleteDowntimeCache(downtimeID=switchDict['downtimeID'], - element=switchDict['element'], - name=switchDict['name'], - startDate=switchDict['startDate'], - endDate=switchDict['endDate'], - severity=switchDict['severity'], - description=switchDict['description'], - link=switchDict['link'] - ) - if not output['OK']: - return output - - if output['Value']: - result['match'] = int(output['Value']) - result['OK'] = True - result['Message'] = output['Message'] if 'Message' in output else None - - return result - - -def run(args, switchDict): - """ - Main function of the script - """ - - query = args[0] - - # it exectues the query request: e.g. if it's a 'select' it executes 'select()' - # the same if it is add, delete - result = eval(query + '( switchDict )') - - if result['OK']: - if query == 'select' and result['match'] > 0: - tabularPrint(result['output']) - confirm(query, result['match']) - else: - error(result['Message']) + query = args[0] + + # it exectues the query request: e.g. if it's a 'select' it executes 'select()' + # the same if it is add, delete + result = eval('self.' + query + '( switchDict )') + + if result['OK']: + if query == 'select' and result['match'] > 0: + self.tabularPrint(result['output']) + self.confirm(query, result['match']) + else: + self.error(result['Message']) @DIRACScript() def main(self): - global subLogger - global ResourceManagementClient - - subLogger = gLogger.getSubLogger(__file__) # Script initialization - registerSwitches(self) - registerUsageMessage(self) - args, switchDict = parseSwitches(self) - - ResourceManagementClient = getattr( - Utils.voimport('DIRAC.ResourceStatusSystem.Client.ResourceManagementClient'), - 'ResourceManagementClient', - ) + params.registerSwitches() + params.registerUsageMessage() + args, switchDict = params.parseSwitches() # Run script - run(args, switchDict) + params.run(args, switchDict) # Bye DIRACExit(0) From a107f2d86c21a9a2469a640b5f780078ebf9b990 Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Mon, 15 Mar 2021 04:24:51 +0100 Subject: [PATCH 11/43] fix pylint --- .../ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py index 6a3cedbce1d..3fbe908354f 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py @@ -349,7 +349,7 @@ def run(self, args, switchDict): @DIRACScript() def main(self): - + params = Params(self) # Script initialization params.registerSwitches() params.registerUsageMessage() From 33d4897afcb54e2ae7d63a6f892124c197a52218 Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Mon, 15 Mar 2021 09:57:59 +0100 Subject: [PATCH 12/43] fix pylint --- .../scripts/dirac_rss_query_db.py | 61 ++++++++----------- .../scripts/dirac_rss_query_dtcache.py | 39 ++++-------- 2 files changed, 36 insertions(+), 64 deletions(-) diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py index 3424a4825c4..5e84907cc60 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py @@ -204,13 +204,12 @@ def unpack(switchDict): if statusType not in acceptableStatusTypes and statusType != 'all': acceptableStatusTypes.append('all') self.error("'%s' is a wrong value for switch 'statusType'.\n\tThe acceptable values are:\n\t%s" - % (statusType, str(acceptableStatusTypes))) + % (statusType, str(acceptableStatusTypes))) if 'all' in statusType: return acceptableStatusTypes return statusTypes - def unpack(self, switchDict): """ To split and process comma-separated list of values for 'name' and 'statusType' @@ -253,9 +252,7 @@ def unpack(self, switchDict): return switchDictSet - # UTILS: for filtering 'select' output - def filterReason(self, selectOutput, reason): """ Selects all the elements that match 'reason' @@ -272,9 +269,7 @@ def filterReason(self, selectOutput, reason): return elementsFiltered - # Utils: for formatting query output and notifications - def error(self, msg): """ Format error messages @@ -285,7 +280,6 @@ def error(self, msg): self.subLogger.error("\tPlease, check documentation below") self.__script.showHelp(exitCode=1) - def confirm(self, query, matches): """ Format confirmation messages @@ -293,7 +287,6 @@ def confirm(self, query, matches): self.subLogger.notice("\nNOTICE: '%s' request successfully executed ( matches' number: %s )! \n" % (query, matches)) - def tabularPrint(self, table): columns_names = list(table[0]) @@ -314,7 +307,6 @@ def tabularPrint(self, table): self.subLogger.notice(output) - def select(self, args, switchDict): """ Given the switches, request a query 'select' on the ResourceStatusDB @@ -328,14 +320,14 @@ def select(self, args, switchDict): result = {'output': None, 'successful': None, 'message': None, 'match': None} output = rssClient.selectStatusElement(element=args[1].title(), - tableType=args[2].title(), - name=switchDict['name'], - statusType=switchDict['statusType'], - status=switchDict['status'], - elementType=switchDict['elementType'], - lastCheckTime=switchDict['lastCheckTime'], - tokenOwner=switchDict['tokenOwner'], - meta=meta) + tableType=args[2].title(), + name=switchDict['name'], + statusType=switchDict['statusType'], + status=switchDict['status'], + elementType=switchDict['elementType'], + lastCheckTime=switchDict['lastCheckTime'], + tokenOwner=switchDict['tokenOwner'], + meta=meta) result['output'] = [dict(zip(output['Columns'], e)) for e in output['Value']] result['output'] = self.filterReason(result['output'], switchDict['reason']) result['match'] = len(result['output']) @@ -344,7 +336,6 @@ def select(self, args, switchDict): return result - def add(self, args, switchDict): """ Given the switches, request a query 'addOrModify' on the ResourceStatusDB @@ -372,7 +363,6 @@ def add(self, args, switchDict): return result - def modify(self, args, switchDict): """ Given the switches, request a query 'modify' on the ResourceStatusDB @@ -383,15 +373,14 @@ def modify(self, args, switchDict): result = {'output': None, 'successful': None, 'message': None, 'match': None} output = rssClient.modifyStatusElement(element=args[1].title(), - tableType=args[2].title(), - name=switchDict['name'], - statusType=switchDict['statusType'], - status=switchDict['status'], - elementType=switchDict['elementType'], - reason=switchDict['reason'], - tokenOwner=self.getToken('owner'), - tokenExpiration=self.getToken('expiration') - ) + tableType=args[2].title(), + name=switchDict['name'], + statusType=switchDict['statusType'], + status=switchDict['status'], + elementType=switchDict['elementType'], + reason=switchDict['reason'], + tokenOwner=self.getToken('owner'), + tokenExpiration=self.getToken('expiration')) if output.get('Value'): result['match'] = int(output['Value'] if output['Value'] else 0) @@ -400,7 +389,6 @@ def modify(self, args, switchDict): return result - def delete(self, args, switchDict): """ Given the switches, request a query 'delete' on the ResourceStatusDB @@ -411,13 +399,13 @@ def delete(self, args, switchDict): result = {'output': None, 'successful': None, 'message': None, 'match': None} output = rssClient.deleteStatusElement(element=args[1].title(), - tableType=args[2].title(), - name=switchDict['name'], - statusType=switchDict['statusType'], - status=switchDict['status'], - elementType=switchDict['elementType'], - reason=switchDict['reason'], - tokenOwner=switchDict['tokenOwner']) + tableType=args[2].title(), + name=switchDict['name'], + statusType=switchDict['statusType'], + status=switchDict['status'], + elementType=switchDict['elementType'], + reason=switchDict['reason'], + tokenOwner=switchDict['tokenOwner']) if 'Value' in output: result['match'] = int(output['Value'] if output['Value'] else 0) @@ -426,7 +414,6 @@ def delete(self, args, switchDict): return result - def run(self, args, switchDictSet): """ Main function of the script diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py index 3fbe908354f..8391b2c0e9a 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py @@ -60,7 +60,6 @@ def registerSwitches(self): for switch in switches: self.__script.registerSwitch('', switch[0], switch[1]) - def registerUsageMessage(self): """ Takes the script __doc__ and adds the DIRAC version to it @@ -71,7 +70,6 @@ def registerUsageMessage(self): self.__script.setUsageMessage(usageMessage) - def parseSwitches(self): """ Parses the arguments passed by the user @@ -110,8 +108,6 @@ def parseSwitches(self): return (args, switches) # UTILS: for filtering 'select' output - - def filterDate(self, selectOutput, start, end): """ Selects all the downtimes that meet the constraints of 'start' and 'end' dates @@ -158,7 +154,6 @@ def filterDate(self, selectOutput, start, end): return downtimesFiltered - def filterOngoing(self, selectOutput): """ Selects all the ongoing downtimes @@ -176,8 +171,7 @@ def filterOngoing(self, selectOutput): return downtimesFiltered - - def filterDescription(self, electOutput, description): + def filterDescription(self, selectOutput, description): """ Selects all the downtimes that match 'description' """ @@ -194,8 +188,6 @@ def filterDescription(self, electOutput, description): return downtimesFiltered # Utils: for formatting query output and notifications - - def error(self, msg): """ Format error messages @@ -206,7 +198,6 @@ def error(self, msg): self.subLogger.error("\tPlease, check documentation below") self.__script.showHelp(exitCode=1) - def confirm(self, query, matches): """ Format confirmation messages @@ -214,7 +205,6 @@ def confirm(self, query, matches): self.subLogger.notice("\nNOTICE: '%s' request successfully executed ( matches' number: %s )! \n" % (query, matches)) - def tabularPrint(self, table): columns_names = list(table[0]) @@ -235,7 +225,6 @@ def tabularPrint(self, table): self.subLogger.notice(output) - def select(self, switchDict): """ Given the switches, request a query 'select' on the ResourceManagementDB @@ -249,10 +238,10 @@ def select(self, switchDict): result = {'output': None, 'OK': None, 'Message': None, 'match': None} output = rmsClient.selectDowntimeCache(downtimeID=switchDict['downtimeID'], - element=switchDict['element'], - name=switchDict['name'], - severity=switchDict['severity'], - meta=meta) + element=switchDict['element'], + name=switchDict['name'], + severity=switchDict['severity'], + meta=meta) if not output['OK']: return output @@ -268,7 +257,6 @@ def select(self, switchDict): return result - def add(self, switchDict): """ Given the switches, request a query 'addOrModify' on the ResourceManagementDB @@ -298,7 +286,6 @@ def add(self, switchDict): return result - def delete(self, switchDict): """ Given the switches, request a query 'delete' on the ResourceManagementDB @@ -309,14 +296,13 @@ def delete(self, switchDict): result = {'output': None, 'OK': None, 'Message': None, 'match': None} output = rmsClient.deleteDowntimeCache(downtimeID=switchDict['downtimeID'], - element=switchDict['element'], - name=switchDict['name'], - startDate=switchDict['startDate'], - endDate=switchDict['endDate'], - severity=switchDict['severity'], - description=switchDict['description'], - link=switchDict['link'] - ) + element=switchDict['element'], + name=switchDict['name'], + startDate=switchDict['startDate'], + endDate=switchDict['endDate'], + severity=switchDict['severity'], + description=switchDict['description'], + link=switchDict['link']) if not output['OK']: return output @@ -327,7 +313,6 @@ def delete(self, switchDict): return result - def run(self, args, switchDict): """ Main function of the script From ffe46c1de4dc1c34b6bcc4e04652de6f852a8b4d Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Mon, 15 Mar 2021 11:02:31 +0100 Subject: [PATCH 13/43] fix pylint --- src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py index 5e84907cc60..470ad2ec44d 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py @@ -204,7 +204,7 @@ def unpack(switchDict): if statusType not in acceptableStatusTypes and statusType != 'all': acceptableStatusTypes.append('all') self.error("'%s' is a wrong value for switch 'statusType'.\n\tThe acceptable values are:\n\t%s" - % (statusType, str(acceptableStatusTypes))) + % (statusType, str(acceptableStatusTypes))) if 'all' in statusType: return acceptableStatusTypes From aed3b6b51059ba2e074f26546cbfe1e3677fdb1f Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Mon, 15 Mar 2021 20:44:49 +0100 Subject: [PATCH 14/43] fix dirac info --- src/DIRAC/Core/Utilities/DIRACScript.py | 9 ++- src/DIRAC/Core/scripts/dirac_info.py | 98 +++++++++++++------------ 2 files changed, 59 insertions(+), 48 deletions(-) diff --git a/src/DIRAC/Core/Utilities/DIRACScript.py b/src/DIRAC/Core/Utilities/DIRACScript.py index 59851b1a19a..05a6faf4dc7 100644 --- a/src/DIRAC/Core/Utilities/DIRACScript.py +++ b/src/DIRAC/Core/Utilities/DIRACScript.py @@ -26,12 +26,17 @@ class DIRACScript(object): def __init__(self): """ c'tor """ - self.scriptName = None self.alreadyInitialized = False self.doc = inspect.currentframe().f_back.f_globals['__doc__'] + self.scriptName = inspect.currentframe().f_back.f_globals['__name__'].split('.')[-1].replace('_', '-') self.localCfg = LocalConfiguration() self.localCfg.setUsageMessage(self.doc) self.showHelp = self.localCfg.showHelp + self.initializeScript() + + def initializeScript(self): + """ Script initialization """ + pass def __call__(self, func=None): """Set the wrapped function or call the script @@ -57,7 +62,7 @@ def __call__(self, func=None): matches = defaultdict(list) function_name = None for entrypoint in metadata.entry_points()['console_scripts']: - if not entrypoint.name.startswith("dirac-"): + if not entrypoint.name.startswith("dirac-") or self.scriptName != entrypoint.name: continue entrypointFunc = entrypoint.load() if not isinstance(entrypointFunc, DIRACScript): diff --git a/src/DIRAC/Core/scripts/dirac_info.py b/src/DIRAC/Core/scripts/dirac_info.py index e159c291676..77e346f5b03 100755 --- a/src/DIRAC/Core/scripts/dirac_info.py +++ b/src/DIRAC/Core/scripts/dirac_info.py @@ -41,65 +41,71 @@ from DIRAC.Core.Utilities.DIRACScript import DIRACScript -@DIRACScript() -def main(self): - def version(arg): +class DIRACInfo(DIRACScript): + + def version(self, arg): self.disableCS() print(DIRAC.version) DIRAC.exit(0) - def platform(arg): + def platform(self, arg): self.disableCS() print(DIRAC.getPlatform()) DIRAC.exit(0) - self.registerSwitch("v", "version", "print version of current DIRAC installation", version) - self.registerSwitch("p", "platform", "print platform of current DIRAC installation", platform) - self.parseCommandLine(ignoreErrors=True) + def run(self): + self.registerSwitch("v", "version", "print version of current DIRAC installation", self.version) + self.registerSwitch("p", "platform", "print platform of current DIRAC installation", self.platform) + self.parseCommandLine(ignoreErrors=True) + + records = [] + + records.append(('Setup', gConfig.getValue('/DIRAC/Setup', 'Unknown'))) + records.append(('ConfigurationServer', gConfig.getValue('/DIRAC/Configuration/Servers', []))) + records.append(('Installation path', DIRAC.rootPath)) + + if os.path.exists(os.path.join(DIRAC.rootPath, DIRAC.getPlatform(), 'bin', 'mysql')): + records.append(('Installation type', 'server')) + else: + records.append(('Installation type', 'client')) + + records.append(('Platform', DIRAC.getPlatform())) + + ret = getProxyInfo(disableVOMS=True) + if ret['OK']: + if 'group' in ret['Value']: + vo = getVOForGroup(ret['Value']['group']) + else: + vo = getVOForGroup('') + if not vo: + vo = "None" + records.append(('VirtualOrganization', vo)) + if 'identity' in ret['Value']: + records.append(('User DN', ret['Value']['identity'])) + if 'secondsLeft' in ret['Value']: + records.append(('Proxy validity, secs', {'Value': str(ret['Value']['secondsLeft']), 'Just': 'L'})) + + if gConfig.getValue('/DIRAC/Security/UseServerCertificate', True): + records.append(('Use Server Certificate', 'Yes')) + else: + records.append(('Use Server Certificate', 'No')) + if gConfig.getValue('/DIRAC/Security/SkipCAChecks', False): + records.append(('Skip CA Checks', 'Yes')) + else: + records.append(('Skip CA Checks', 'No')) - records = [] + records.append(('DIRAC version', DIRAC.version)) - records.append(('Setup', gConfig.getValue('/DIRAC/Setup', 'Unknown'))) - records.append(('ConfigurationServer', gConfig.getValue('/DIRAC/Configuration/Servers', []))) - records.append(('Installation path', DIRAC.rootPath)) + fields = ['Option', 'Value'] - if os.path.exists(os.path.join(DIRAC.rootPath, DIRAC.getPlatform(), 'bin', 'mysql')): - records.append(('Installation type', 'server')) - else: - records.append(('Installation type', 'client')) + print() + printTable(fields, records, numbering=False) + print() - records.append(('Platform', DIRAC.getPlatform())) - ret = getProxyInfo(disableVOMS=True) - if ret['OK']: - if 'group' in ret['Value']: - vo = getVOForGroup(ret['Value']['group']) - else: - vo = getVOForGroup('') - if not vo: - vo = "None" - records.append(('VirtualOrganization', vo)) - if 'identity' in ret['Value']: - records.append(('User DN', ret['Value']['identity'])) - if 'secondsLeft' in ret['Value']: - records.append(('Proxy validity, secs', {'Value': str(ret['Value']['secondsLeft']), 'Just': 'L'})) - - if gConfig.getValue('/DIRAC/Security/UseServerCertificate', True): - records.append(('Use Server Certificate', 'Yes')) - else: - records.append(('Use Server Certificate', 'No')) - if gConfig.getValue('/DIRAC/Security/SkipCAChecks', False): - records.append(('Skip CA Checks', 'Yes')) - else: - records.append(('Skip CA Checks', 'No')) - - records.append(('DIRAC version', DIRAC.version)) - - fields = ['Option', 'Value'] - - print() - printTable(fields, records, numbering=False) - print() +@DIRACInfo() +def main(self): + self.run() if __name__ == "__main__": From 89fbea7b6bb78510fa3731231704fe34f3c39694 Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Wed, 17 Mar 2021 01:38:42 +0100 Subject: [PATCH 15/43] merge #5024 --- .../dirac-my-great-script.py | 24 +- .../DevelopingCommands/dirac_ping_info.py | 9 +- .../scripts/dirac_accounting_decode_fileid.py | 12 +- .../scripts/dirac_admin_accounting_cli.py | 3 - .../Client/LocalConfiguration.py | 17 +- .../scripts/dirac_admin_add_resources.py | 310 ++++---- .../scripts/dirac_admin_add_shifter.py | 24 +- .../scripts/dirac_admin_add_site.py | 26 +- .../scripts/dirac_admin_bdii_info.py | 102 ++- .../dirac_admin_check_config_options.py | 57 +- .../scripts/dirac_admin_sort_cs_sites.py | 61 +- .../scripts/dirac_admin_voms_sync.py | 39 +- .../scripts/dirac_configuration_cli.py | 1 - .../dirac_configuration_dump_local_cache.py | 35 +- src/DIRAC/Core/Utilities/DIRACScript.py | 13 +- src/DIRAC/Core/scripts/dirac_agent.py | 7 +- src/DIRAC/Core/scripts/dirac_configure.py | 675 +++++++++--------- src/DIRAC/Core/scripts/dirac_executor.py | 4 +- .../scripts/dirac_externals_requirements.py | 25 +- src/DIRAC/Core/scripts/dirac_info.py | 1 - src/DIRAC/Core/scripts/dirac_install_db.py | 13 +- .../Core/scripts/dirac_install_web_portal.py | 1 - src/DIRAC/Core/scripts/dirac_service.py | 4 +- src/DIRAC/Core/scripts/dirac_setup_site.py | 25 +- .../scripts/dirac_admin_allow_se.py | 11 +- .../scripts/dirac_admin_ban_se.py | 11 +- .../scripts/dirac_admin_user_quota.py | 9 +- .../scripts/dirac_dms_add_file.py | 52 +- .../scripts/dirac_dms_catalog_metadata.py | 24 +- .../dirac_dms_change_replica_status.py | 18 +- .../scripts/dirac_dms_clean_directory.py | 17 +- .../dirac_dms_create_archive_request.py | 39 +- .../dirac_dms_create_moving_request.py | 29 +- .../dirac_dms_create_removal_request.py | 12 +- .../scripts/dirac_dms_data_size.py | 12 +- .../scripts/dirac_dms_directory_sync.py | 16 +- .../scripts/dirac_dms_filecatalog_cli.py | 4 - .../scripts/dirac_dms_find_lfns.py | 21 +- .../scripts/dirac_dms_move_replica_request.py | 8 +- .../dirac_dms_put_and_register_request.py | 29 +- .../scripts/dirac_dms_remove_catalog_files.py | 11 +- .../dirac_dms_remove_catalog_replicas.py | 13 +- .../scripts/dirac_dms_remove_files.py | 25 +- .../scripts/dirac_dms_remove_replicas.py | 23 +- .../scripts/dirac_dms_replica_metadata.py | 15 +- ...irac_dms_replicate_and_register_request.py | 18 +- .../scripts/dirac_dms_resolve_guid.py | 4 +- .../scripts/dirac_dms_set_replica_status.py | 23 +- .../scripts/dirac_dms_show_se_status.py | 61 +- .../scripts/dirac_dms_user_lfns.py | 1 - .../scripts/dirac_dms_user_quota.py | 1 - .../FrameworkSystem/Client/ProxyGeneration.py | 296 ++++---- .../FrameworkSystem/Client/ProxyUpload.py | 154 ++-- .../scripts/dirac_admin_get_CAs.py | 1 - .../scripts/dirac_admin_get_proxy.py | 28 +- .../scripts/dirac_admin_proxy_upload.py | 12 +- .../scripts/dirac_admin_sysadmin_cli.py | 1 - .../scripts/dirac_admin_update_instance.py | 8 - .../scripts/dirac_admin_update_pilot.py | 22 +- .../scripts/dirac_admin_users_with_proxy.py | 12 +- .../scripts/dirac_install_component.py | 66 +- .../scripts/dirac_install_tornado_service.py | 70 +- .../dirac_monitoring_get_components_status.py | 7 +- .../scripts/dirac_myproxy_upload.py | 4 +- .../scripts/dirac_populate_component_db.py | 35 +- .../scripts/dirac_proxy_destroy.py | 212 +++--- .../scripts/dirac_proxy_get_uploaded_info.py | 47 +- .../scripts/dirac_proxy_info.py | 54 +- .../scripts/dirac_proxy_init.py | 95 +-- .../scripts/dirac_restart_component.py | 19 +- .../scripts/dirac_start_component.py | 18 +- .../scripts/dirac_status_component.py | 19 +- .../scripts/dirac_stop_component.py | 28 +- .../scripts/dirac_sys_sendmail.py | 10 +- .../scripts/dirac_uninstall_component.py | 37 +- .../scripts/dirac_admin_add_group.py | 47 +- .../scripts/dirac_admin_add_host.py | 42 +- .../scripts/dirac_admin_add_user.py | 51 +- .../scripts/dirac_admin_allow_site.py | 19 +- .../scripts/dirac_admin_ban_site.py | 17 +- .../Interfaces/scripts/dirac_admin_ce_info.py | 18 +- .../scripts/dirac_admin_delete_user.py | 13 +- .../scripts/dirac_admin_get_banned_sites.py | 3 +- .../dirac_admin_get_job_pilot_output.py | 13 +- .../scripts/dirac_admin_get_job_pilots.py | 13 +- .../scripts/dirac_admin_get_pilot_info.py | 22 +- .../dirac_admin_get_pilot_logging_info.py | 14 +- .../scripts/dirac_admin_get_pilot_output.py | 13 +- .../scripts/dirac_admin_get_site_mask.py | 3 - .../scripts/dirac_admin_list_hosts.py | 4 +- .../scripts/dirac_admin_list_users.py | 17 +- .../scripts/dirac_admin_modify_user.py | 20 +- .../scripts/dirac_admin_pilot_summary.py | 4 +- .../scripts/dirac_admin_reset_job.py | 14 +- .../scripts/dirac_admin_service_ports.py | 13 +- .../scripts/dirac_admin_set_site_protocols.py | 13 +- .../scripts/dirac_admin_site_info.py | 15 +- .../scripts/dirac_admin_site_mask_logging.py | 15 +- .../dirac_admin_sync_users_from_file.py | 11 +- .../Interfaces/scripts/dirac_dms_get_file.py | 7 +- .../scripts/dirac_dms_lfn_accessURL.py | 22 +- .../scripts/dirac_dms_lfn_metadata.py | 13 +- .../scripts/dirac_dms_lfn_replicas.py | 13 +- .../scripts/dirac_dms_pfn_accessURL.py | 18 +- .../scripts/dirac_dms_pfn_metadata.py | 18 +- .../scripts/dirac_dms_replicate_lfn.py | 27 +- .../scripts/dirac_framework_ping_service.py | 15 +- .../scripts/dirac_framework_self_ping.py | 2 +- .../Interfaces/scripts/dirac_repo_monitor.py | 13 +- .../scripts/dirac_utils_file_adler.py | 12 +- .../scripts/dirac_utils_file_md5.py | 12 +- .../dirac_wms_get_normalized_queue_length.py | 15 +- .../dirac_wms_get_queue_normalization.py | 13 +- .../scripts/dirac_wms_job_attributes.py | 13 +- .../scripts/dirac_wms_job_delete.py | 13 +- .../scripts/dirac_wms_job_get_input.py | 15 +- .../scripts/dirac_wms_job_get_jdl.py | 13 +- .../scripts/dirac_wms_job_get_output.py | 13 +- .../scripts/dirac_wms_job_get_output_data.py | 15 +- .../Interfaces/scripts/dirac_wms_job_kill.py | 13 +- .../scripts/dirac_wms_job_logging_info.py | 13 +- .../scripts/dirac_wms_job_parameters.py | 13 +- .../Interfaces/scripts/dirac_wms_job_peek.py | 13 +- .../scripts/dirac_wms_job_reschedule.py | 13 +- .../scripts/dirac_wms_job_status.py | 13 +- .../scripts/dirac_wms_job_submit.py | 15 +- .../dirac_wms_jobs_select_output_search.py | 10 +- .../scripts/dirac_wms_select_jobs.py | 10 +- .../scripts/dirac_prod_add_trans.py | 24 +- .../scripts/dirac_prod_clean.py | 14 +- .../scripts/dirac_prod_delete.py | 14 +- .../scripts/dirac_prod_get.py | 18 +- .../scripts/dirac_prod_get_all.py | 4 - .../scripts/dirac_prod_get_description.py | 20 +- .../scripts/dirac_prod_get_trans.py | 14 +- .../scripts/dirac_prod_start.py | 14 +- .../scripts/dirac_prod_stop.py | 13 +- .../scripts/dirac_rms_list_req_cache.py | 7 +- .../scripts/dirac_rms_reqdb_summary.py | 7 +- .../scripts/dirac_rms_request.py | 15 +- .../scripts/dirac_rss_list_status.py | 154 +++- .../scripts/dirac_rss_query_db.py | 35 +- .../scripts/dirac_rss_query_dtcache.py | 50 +- .../scripts/dirac_rss_set_status.py | 343 +++++---- .../scripts/dirac_rss_set_token.py | 131 ++-- .../scripts/dirac_rss_sync.py | 364 +++++----- .../scripts/dirac_resource_get_parameters.py | 44 +- .../Resources/scripts/dirac_resource_info.py | 111 ++- .../scripts/dirac_stager_monitor_file.py | 52 +- .../scripts/dirac_stager_monitor_jobs.py | 148 ++-- .../scripts/dirac_stager_monitor_request.py | 8 +- .../scripts/dirac_stager_monitor_requests.py | 11 +- .../scripts/dirac_stager_show_stats.py | 2 +- .../Utilities/ReplicationCLIParameters.py | 44 +- .../scripts/dirac_production_runjoblocal.py | 6 +- .../scripts/dirac_transformation_add_files.py | 15 +- .../scripts/dirac_transformation_archive.py | 13 +- .../scripts/dirac_transformation_clean.py | 13 +- .../scripts/dirac_transformation_cli.py | 1 - .../scripts/dirac_transformation_get_files.py | 8 +- .../dirac_transformation_recover_data.py | 19 +- .../dirac_transformation_remove_output.py | 10 +- .../dirac_transformation_replication.py | 35 +- .../dirac_transformation_verify_outputdata.py | 13 +- .../scripts/dirac_admin_kill_pilot.py | 12 +- .../scripts/dirac_admin_pilot_logging_info.py | 55 +- .../scripts/dirac_admin_show_task_queues.py | 45 +- .../scripts/dirac_admin_sync_pilot.py | 21 +- .../scripts/dirac_jobexec.py | 3 +- .../scripts/dirac_wms_cpu_normalization.py | 1 - .../scripts/dirac_wms_get_queue_cpu_time.py | 3 +- .../scripts/dirac_wms_get_wn.py | 4 - .../scripts/dirac_wms_get_wn_parameters.py | 40 +- .../scripts/dirac_wms_match.py | 50 +- .../scripts/dirac_wms_pilot_job_info.py | 22 +- tests/CI/docker-compose.yml | 4 +- tests/CI/run_docker_setup.sh | 2 - tests/Jenkins/dirac_ci.sh | 2 +- 178 files changed, 2645 insertions(+), 3472 deletions(-) diff --git a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py index 0702aa98507..2f8680d067d 100644 --- a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py +++ b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac-my-great-script.py @@ -3,11 +3,10 @@ This script prints out how great is it, shows raw queries and sets the number of pings. -Usage: - dirac-my-great-script [options] - -Arguments: - [ ...] +Example: + $ dirac-my-great-script MyService + Hello MyService! + We are done """ from __future__ import absolute_import from __future__ import division @@ -19,8 +18,7 @@ from DIRAC.Core.Utilities.DIRACScript import DIRACScript - -class Params(object): +class MyGreatScript(DIRACScript): ''' Class holding the parameters raw and pingsToDo, and callbacks for their respective switches. @@ -52,15 +50,17 @@ def setNumOfPingsToDo(self, value): # IMPORTANT: Make sure to add the console-scripts entry to setup.cfg as well! -@DIRACScript() +@MyGreatScript() def main(self): ''' This is the script main method, which will hold all the logic. ''' - params = Params() # Script initialization - self.registerSwitches(params.switches) + self.registerSwitches(self.switches) + + # Register positional arguments + self.registerArgument(["Service: service names"]) # Parse the command line and initialize DIRAC unprogressSwitches, args = self.parseCommandLine(ignoreErrors=False) @@ -76,10 +76,6 @@ def main(self): # Import the required DIRAC modules from DIRAC.Interfaces.API.Dirac import Dirac - # let's do something - if not servicesList: - gLogger.error('No services defined') - DIRACExit(1) gLogger.notice('We are done') DIRACExit(0) diff --git a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_ping_info.py b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_ping_info.py index fc68cfe40e7..239e668ce42 100644 --- a/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_ping_info.py +++ b/docs/source/DeveloperGuide/AddingNewComponents/DevelopingCommands/dirac_ping_info.py @@ -20,9 +20,9 @@ # Define a simple class to hold the script parameters -class Params(object): +class MyPing(DIRACScript): - def __init__(self): + def initParameters(self): self.raw = False self.pingsToDo = 1 @@ -38,11 +38,8 @@ def setNumOfPingsToDo(self, value): return S_OK() -@DIRACScript() +@MyPing() def main(self): - # Instantiate the params class - cliParams = Params() - # Register accepted switches and their callbacks Script.registerSwitch("r", "showRaw", "show raw result from the query", cliParams.setRawResult) Script.registerSwitch("p:", "numPings=", "Number of pings to do (by default 1)", cliParams.setNumOfPingsToDo) diff --git a/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py b/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py index b78d1e893ff..352fdce7956 100755 --- a/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py +++ b/src/DIRAC/AccountingSystem/scripts/dirac_accounting_decode_fileid.py @@ -5,12 +5,6 @@ ######################################################################## """ Decode Accounting plot URLs - -Usage: - dirac-accounting-decode-fileid [options] ... URL ... - -Arguments: - URL: encoded URL of a DIRAC Accounting plot """ from __future__ import absolute_import from __future__ import division @@ -24,16 +18,14 @@ from six.moves.urllib import parse as urlparse from DIRAC import gLogger - from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): from DIRAC.Core.Utilities.Plotting.FileCoding import extractRequestFromFileId - self.parseCommandLine() - - fileIds = self.getPositionalArgs() + self.registerArgument(["URL: encoded URL of a DIRAC Accounting plot"]) + _, fileIds = self.parseCommandLine() for fileId in fileIds: # Try to find if it's a url diff --git a/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py b/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py index 63c09d92586..3bb16076d7c 100755 --- a/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py +++ b/src/DIRAC/AccountingSystem/scripts/dirac_admin_accounting_cli.py @@ -5,9 +5,6 @@ ######################################################################## """ Command line administrative interface to DIRAC Accounting DataStore Service - -Usage: - dirac-admin-accounting-cli [options] ... """ from __future__ import absolute_import from __future__ import division diff --git a/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py b/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py index 1782fa9c422..d39e3be48f3 100755 --- a/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py +++ b/src/DIRAC/ConfigurationSystem/Client/LocalConfiguration.py @@ -12,14 +12,11 @@ import six import getopt -import DIRAC -from DIRAC import gLogger -from DIRAC import S_OK, S_ERROR - -from DIRAC.ConfigurationSystem.Client.ConfigurationData import gConfigurationData +from DIRAC import gLogger, S_OK, S_ERROR, rootPath, exit as DIRACExit +from DIRAC.Core.Utilities.Devloader import Devloader from DIRAC.ConfigurationSystem.private.Refresher import gRefresher from DIRAC.ConfigurationSystem.Client.PathFinder import getServiceSection, getAgentSection, getExecutorSection -from DIRAC.Core.Utilities.Devloader import Devloader +from DIRAC.ConfigurationSystem.Client.ConfigurationData import gConfigurationData class LocalConfiguration(object): @@ -329,9 +326,11 @@ def loadUserData(self): optionPath = self.__getAbsolutePath(optionTuple[0]) if not gConfigurationData.extractOptionFromCFG(optionPath): gConfigurationData.setOptionInCFG(optionPath, optionTuple[1]) + self.__initLogger(self.componentName, self.loggingSection) if not retVal['OK']: return retVal + retVal = self.__checkMandatoryOptions() if not retVal['OK']: return retVal @@ -634,7 +633,7 @@ def showLicense(self, dummy=False): """ Print license """ - lpath = os.path.join(DIRAC.rootPath, "DIRAC", "LICENSE") + lpath = os.path.join(rootPath, "DIRAC", "LICENSE") sys.stdout.write(" - DIRAC is GPLv3 licensed\n\n") try: with open(lpath) as fd: @@ -642,7 +641,7 @@ def showLicense(self, dummy=False): except IOError: sys.stdout.write("Can't find GPLv3 license at %s. Somebody stole it!\n" % lpath) sys.stdout.write("Please check out http://www.gnu.org/licenses/gpl-3.0.html for more info\n") - DIRAC.exit(0) + DIRACExit(0) def showHelp(self, dummy=False, exitCode=0): """ Printout help message including a Usage message if defined via setUsageMessage method @@ -721,7 +720,7 @@ def showHelp(self, dummy=False, exitCode=0): gLogger.notice(self.__helpExampleDoc) gLogger.notice("") - DIRAC.exit(exitCode) + DIRACExit(exitCode) def deleteOption(self, optionPath): """ diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py index 665e1ae5681..5ff3b6a89d6 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_resources.py @@ -14,10 +14,8 @@ import signal import shlex - import six - from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC import gLogger, exit as DIRACExit from DIRAC.ConfigurationSystem.Client.Utilities import getGridCEs, getSiteUpdates @@ -60,16 +58,42 @@ def checkUnusedCEs(): global vo, dry, ceBdiiDict, hostURL - gLogger.notice('looking for new computing resources in the BDII database...') + knownCEs = set() + for _site, ces in res['Value'].items(): + knownCEs.update(ces) - res = getQueues(community=vo) - if not res['OK']: - gLogger.error('ERROR: failed to get CEs from CS', res['Message']) - DIRACExit(-1) + result = getGridCEs(self.vo, ceBlackList=knownCEs, hostURL=self.hostURL, glue2=self.glue2) + if not result['OK']: + gLogger.error('ERROR: failed to get CEs from BDII', result['Message']) + DIRACExit(-1) + self.ceBdiiDict = result['BdiiInfo'] + + unknownCEs = result['UnknownCEs'] + if unknownCEs: + gLogger.notice('There is no (longer) information about the following CEs for the %s VO:' % self.vo) + gLogger.notice('\n'.join(sorted(unknownCEs))) + + siteDict = result['Value'] + if siteDict: + gLogger.notice('New resources available:') + for site in siteDict: + diracSite = 'Unknown' + result = getDIRACSiteName(site) + if result['OK']: + diracSite = ','.join(result['Value']) + if siteDict[site]: + gLogger.notice(" %s, DIRAC site %s" % (site, diracSite)) + for ce in siteDict[site]: + gLogger.notice(' ' * 4 + ce) + gLogger.notice(' %s, %s' % (siteDict[site][ce]['CEType'], '%s_%s_%s' % siteDict[site][ce]['System'])) + else: + gLogger.notice('No new resources available, exiting') + return - knownCEs = set() - for _site, ces in res['Value'].items(): - knownCEs.update(ces) + inp = six.moves.input("\nDo you want to add sites ? [default=yes] [yes|no]: ") + inp = inp.strip() + if not inp and inp.lower().startswith('n'): + return result = getGridCEs(vo, ceBlackList=knownCEs, hostURL=hostURL) if not result['OK']: @@ -77,114 +101,74 @@ def checkUnusedCEs(): DIRACExit(-1) ceBdiiDict = result['BdiiInfo'] - unknownCEs = result['UnknownCEs'] - if unknownCEs: - gLogger.notice('There is no (longer) information about the following CEs for the %s VO:' % vo) - gLogger.notice('\n'.join(sorted(unknownCEs))) + sitesAdded = [] - siteDict = result['Value'] - if siteDict: - gLogger.notice('New resources available:') for site in siteDict: - diracSite = 'Unknown' + # Get the country code: + country = '' + for ce in siteDict[site]: + country = ce.strip().split('.')[-1].lower() + if len(country) == 2: + break + if country == 'gov': + country = 'us' + break + if not country or len(country) != 2: + country = 'xx' result = getDIRACSiteName(site) - if result['OK']: - diracSite = ','.join(result['Value']) - if siteDict[site]: - gLogger.notice(" %s, DIRAC site %s" % (site, diracSite)) - for ce in siteDict[site]: - gLogger.notice(' ' * 4 + ce) - gLogger.notice(' %s, %s' % (siteDict[site][ce]['CEType'], '%s_%s_%s' % siteDict[site][ce]['System'])) - else: - gLogger.notice('No new resources available, exiting') - return - - inp = six.moves.input("\nDo you want to add sites ? [default=yes] [yes|no]: ") - inp = inp.strip() - if not inp and inp.lower().startswith('n'): - return - - gLogger.notice('\nAdding new sites/CEs interactively\n') - - sitesAdded = [] - - for site in siteDict: - # Get the country code: - country = '' - for ce in siteDict[site]: - country = ce.strip().split('.')[-1].lower() - if len(country) == 2: - break - if country == 'gov': - country = 'us' - break - if not country or len(country) != 2: - country = 'xx' - result = getDIRACSiteName(site) - if not result['OK']: - gLogger.notice('\nThe site %s is not yet in the CS, give it a name' % site) - diracSite = six.moves.input('[help|skip|..%s]: ' % country) - if diracSite.lower() == "skip": - continue - if diracSite.lower() == "help": - gLogger.notice('%s site details:' % site) - for k, v in ceBdiiDict[site].items(): - if k != "CEs": - gLogger.notice('%s\t%s' % (k, v)) - gLogger.notice('\nEnter DIRAC site name in the form ..%s\n' % country) - diracSite = six.moves.input('[..%s]: ' % country) - try: - _, _, _ = diracSite.split('.') - except ValueError: - gLogger.error('ERROR: DIRAC site name does not follow convention: %s' % diracSite) - continue - diracSites = [diracSite] - else: - diracSites = result['Value'] - - if len(diracSites) > 1: - gLogger.notice('Attention! GOC site %s corresponds to more than one DIRAC sites:' % site) - gLogger.notice(str(diracSites)) - gLogger.notice('Please, pay attention which DIRAC site the new CEs will join\n') - - newCEs = {} - addedCEs = [] - for ce in siteDict[site]: - ceType = siteDict[site][ce]['CEType'] - for diracSite in diracSites: - if ce in addedCEs: + if not result['OK']: + gLogger.notice('\nThe site %s is not yet in the CS, give it a name' % site) + diracSite = six.moves.input('[help|skip|..%s]: ' % country) + if diracSite.lower() == "skip": continue - yn = six.moves.input("Add CE %s of type %s to %s? [default yes] [yes|no]: " % (ce, ceType, diracSite)) - if yn == '' or yn.lower().startswith('y'): - newCEs.setdefault(diracSite, []) - newCEs[diracSite].append(ce) - addedCEs.append(ce) - - for diracSite in diracSites: - if diracSite in newCEs: - cmd = "dirac-admin-add-site %s %s %s" % (diracSite, site, ' '.join(newCEs[diracSite])) - gLogger.notice("\nNew site/CEs will be added with command:\n%s" % cmd) - yn = six.moves.input("Add it ? [default yes] [yes|no]: ") - if not (yn == '' or yn.lower().startswith('y')): + if diracSite.lower() == "help": + gLogger.notice('%s site details:' % site) + for k, v in self.ceBdiiDict[site].items(): + if k != "CEs": + gLogger.notice('%s\t%s' % (k, v)) + gLogger.notice('\nEnter DIRAC site name in the form ..%s\n' % country) + diracSite = six.moves.input('[..%s]: ' % country) + try: + _, _, _ = diracSite.split('.') + except ValueError: + gLogger.error('ERROR: DIRAC site name does not follow convention: %s' % diracSite) continue + diracSites = [diracSite] + else: + diracSites = result['Value'] + + if len(diracSites) > 1: + gLogger.notice('Attention! GOC site %s corresponds to more than one DIRAC sites:' % site) + gLogger.notice(str(diracSites)) + gLogger.notice('Please, pay attention which DIRAC site the new CEs will join\n') + + newCEs = {} + addedCEs = [] + for ce in siteDict[site]: + ceType = siteDict[site][ce]['CEType'] + for diracSite in diracSites: + if ce in addedCEs: + continue + yn = six.moves.input("Add CE %s of type %s to %s? [default yes] [yes|no]: " % (ce, ceType, diracSite)) + if yn == '' or yn.lower().startswith('y'): + newCEs.setdefault(diracSite, []) + newCEs[diracSite].append(ce) + addedCEs.append(ce) - if dry: - gLogger.notice("Command is skipped in the dry run") - else: - result = systemCall(0, shlex.split(cmd)) - if not result['OK']: - gLogger.error('Error while executing dirac-admin-add-site command') - yn = six.moves.input("Do you want to continue ? [default no] [yes|no]: ") - if yn == '' or yn.lower().startswith('n'): - if sitesAdded: - gLogger.notice('CEs were added at the following sites:') - for site, diracSite in sitesAdded: - gLogger.notice("%s\t%s" % (site, diracSite)) - DIRACExit(0) + for diracSite in diracSites: + if diracSite in newCEs: + cmd = "dirac-admin-add-site %s %s %s" % (diracSite, site, ' '.join(newCEs[diracSite])) + gLogger.notice("\nNew site/CEs will be added with command:\n%s" % cmd) + yn = six.moves.input("Add it ? [default yes] [yes|no]: ") + if not (yn == '' or yn.lower().startswith('y')): + continue + + if self.dry: + gLogger.notice("Command is skipped in the dry run") else: - exitStatus, stdData, errData = result['Value'] - if exitStatus: - gLogger.error('Error while executing dirac-admin-add-site command\n', '\n'.join([stdData, errData])) + result = systemCall(0, shlex.split(cmd)) + if not result['OK']: + gLogger.error('Error while executing dirac-admin-add-site command') yn = six.moves.input("Do you want to continue ? [default no] [yes|no]: ") if yn == '' or yn.lower().startswith('n'): if sitesAdded: @@ -193,35 +177,66 @@ def checkUnusedCEs(): gLogger.notice("%s\t%s" % (site, diracSite)) DIRACExit(0) else: - sitesAdded.append((site, diracSite)) - gLogger.notice(stdData) - - if sitesAdded: - gLogger.notice('CEs were added at the following sites:') - for site, diracSite in sitesAdded: - gLogger.notice("%s\t%s" % (site, diracSite)) - else: - gLogger.notice('No new CEs were added this time') - - -def updateCS(changeSet): + exitStatus, stdData, errData = result['Value'] + if exitStatus: + gLogger.error('Error while executing dirac-admin-add-site command\n', '\n'.join([stdData, errData])) + yn = six.moves.input("Do you want to continue ? [default no] [yes|no]: ") + if yn == '' or yn.lower().startswith('n'): + if sitesAdded: + gLogger.notice('CEs were added at the following sites:') + for site, diracSite in sitesAdded: + gLogger.notice("%s\t%s" % (site, diracSite)) + DIRACExit(0) + else: + sitesAdded.append((site, diracSite)) + gLogger.notice(stdData) + + if sitesAdded: + gLogger.notice('CEs were added at the following sites:') + for site, diracSite in sitesAdded: + gLogger.notice("%s\t%s" % (site, diracSite)) + else: + gLogger.notice('No new CEs were added this time') + + def updateCS(self, changeSet): + """ Update CS + + :param str changeSet: changes to CS + """ + changeList = sorted(changeSet) + if self.dry: + gLogger.notice('The following needed changes are detected:\n') + else: + gLogger.notice('We are about to make the following changes to CS:\n') + for entry in changeList: + gLogger.notice("%s/%s %s -> %s" % entry) + + if not self.dry: + csAPI = CSAPI() + csAPI.initialize() + result = csAPI.downloadCSData() + if not result['OK']: + gLogger.error('Failed to initialize CSAPI object', result['Message']) + DIRACExit(-1) + for section, option, value, new_value in changeSet: + if value == 'Unknown' or not value: + csAPI.setOption(cfgPath(section, option), new_value) + else: + csAPI.modifyValue(cfgPath(section, option), new_value) - global vo, dry, ceBdiiDict + yn = six.moves.input('Do you want to commit changes to CS ? [default yes] [yes|no]: ') + if yn == '' or yn.lower().startswith('y'): + result = csAPI.commit() + if not result['OK']: + gLogger.error("Error while commit to CS", result['Message']) + else: + gLogger.notice("Successfully committed %d changes to CS" % len(changeSet)) - changeList = sorted(changeSet) - if dry: - gLogger.notice('The following needed changes are detected:\n') - else: - gLogger.notice('We are about to make the following changes to CS:\n') - for entry in changeList: - gLogger.notice("%s/%s %s -> %s" % entry) - - if not dry: - csAPI = CSAPI() - csAPI.initialize() - result = csAPI.downloadCSData() + def updateSites(self): + """ Update sites """ + result = getSiteUpdates(self.vo, bdiiInfo=self.ceBdiiDict, glue2=self.glue2) if not result['OK']: - gLogger.error('Failed to initialize CSAPI object', result['Message']) + gLogger.error('Failed to get site updates', result['Message']) DIRACExit(-1) for section, option, value, new_value in changeSet: if value == 'Unknown' or not value: @@ -250,8 +265,10 @@ def updateSites(): updateCS(changeSet) + self.updateCS(changeSet) def handler(signum, frame): + """ Handler """ gLogger.notice('\nExit is forced, bye...') DIRACExit(-1) @@ -261,32 +278,25 @@ def main(self): signal.signal(signal.SIGTERM, handler) signal.signal(signal.SIGINT, handler) - global vo, dry, doCEs, ceBdiiDict + self.processScriptSwitches() - processScriptSwitches(self) - - if not vo: + if not self.vo: gLogger.error('No VO specified') DIRACExit(-1) - vo = getVOOption(vo, 'VOMSName', vo) + self.vo = getVOOption(self.vo, 'VOMSName', self.vo) - if doCEs: + if self.doCEs: yn = six.moves.input('Do you want to check/add new sites to CS ? [default yes] [yes|no]: ') yn = yn.strip() if yn == '' or yn.lower().startswith('y'): - checkUnusedCEs() + self.checkUnusedCEs() yn = six.moves.input('Do you want to update CE details in the CS ? [default yes] [yes|no]: ') yn = yn.strip() if yn == '' or yn.lower().startswith('y'): - updateSites() + self.updateSites() if __name__ == "__main__": - vo = '' - dry = False - doCEs = False - ceBdiiDict = None - main() # pylint: disable=no-value-for-parameter diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py index ca51cb795f5..a3fcf76bac5 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_shifter.py @@ -5,40 +5,28 @@ ######################################################################## """ Adds or modify a shifter, in the operations section of the CS - -Usage: - dirac-admin-add-shifter [options] ... ShifterRole UserName DIRACGroup ... - -Arguments: - ShifterRole: Name of the shifter role, e.g. DataManager - UserName: A user name, as registered in Registry section - DIRACGroup: DIRAC Group, e.g. diracAdmin (the user has to have this role) """ from __future__ import absolute_import from __future__ import division from __future__ import print_function -__RCSID__ = "$Id$" +__RCSID__ = "$Id$" +from DIRAC import exit as DIRACExit, gLogger from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.ConfigurationSystem.Client.CSAPI import CSAPI -from DIRAC import exit as DIRACExit, gLogger @DIRACScript() def main(self): + self.registerArgument("ShifterRole: Name of the shifter role, e.g. DataManager") + self.registerArgument("UserName: A user name, as registered in Registry section") + self.registerArgument("DIRACGroup: DIRAC Group, e.g. diracAdmin (the user has to have this role)") self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() csAPI = CSAPI() - if len(args) < 3: - self.showHelp(exitCode=1) - - shifterRole = args[0] - userName = args[1] - diracGroup = args[2] - + shifterRole, userName, diracGroup = self.getPositionalArgs(group=True) res = csAPI.addShifter({shifterRole: {'User': userName, 'Group': diracGroup}}) if not res['OK']: gLogger.error("Could not add shifter", ": " + res['Message']) diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py index 69af25abef4..f713cb8dceb 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_add_site.py @@ -8,42 +8,32 @@ If site is already in the CS with another name, error message will be produced. If site is already in the CS with the right name, only new CEs will be added. -Usage: - dirac-admin-add-site [options] ... DIRACSiteName GridSiteName CE [CE] ... - -Arguments: - DIRACSiteName: Name of the site for DIRAC in the form GRID.LOCATION.COUNTRY (ie:LCG.CERN.ch) - GridSiteName: Name of the site in the Grid (ie: CERN-PROD) - CE: Name of the CE to be included in the site (ie: ce111.cern.ch) - Example: - $ dirac-admin-add-site LCG.IN2P3.fr IN2P3-Site + $ dirac-admin-add-site LCG.IN2P3.fr IN2P3-Site ce01.in2p3.fr """ from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" import six - -from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC import exit as DIRACExit, gLogger -from DIRAC.ConfigurationSystem.Client.Helpers.Resources import getDIRACSiteName +from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.ConfigurationSystem.Client.CSAPI import CSAPI +from DIRAC.ConfigurationSystem.Client.Helpers.Resources import getDIRACSiteName @DIRACScript() def main(self): + self.registerArgument(" DIRACSiteName: DIRAC Site name in the form GRID.LOCATION.COUNTRY (ie:LCG.CERN.ch)") + self.registerArgument(" GridSiteName: Name of the site in the Grid (ie: CERN-PROD)") + self.registerArgument(["CE: Name of the CE to be included in the site (ie: ce111.cern.ch)"]) self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - if len(args) < 3: - self.showHelp(exitCode=1) + diracSiteName, gridSiteName, ces = self.getPositionalArgs(group=True) - diracSiteName = args[0] - gridSiteName = args[1] - ces = args[2:] try: diracGridType, place, country = diracSiteName.split('.') except ValueError: diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py index 0a329cf18cc..d3d9896ebd5 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_bdii_info.py @@ -5,14 +5,6 @@ ######################################################################## """ Check info on BDII for a given CE or site - -Usage: - dirac-admin-bdii-info [options] ... - -Arguments: - Site: Name of the Site (i.e. CERN-PROD) - CE: Name of the CE (i.e. cccreamceli05.in2p3.fr) - info: Accepted values (ce|ce-state|ce-cluster|ce-vo|site) """ from __future__ import print_function from __future__ import absolute_import @@ -21,62 +13,66 @@ __RCSID__ = "$Id$" import DIRAC - -from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Security.ProxyInfo import getProxyInfo +from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.ConfigurationSystem.Client.Helpers.Registry import getVOForGroup -def registerSwitches(self): - ''' - Registers all switches that can be used while calling the script from the - command line interface. - ''' +class BdiiInfo(DIRACScript): - self.registerSwitch("H:", "host=", "BDII host") - self.registerSwitch("V:", "vo=", "vo") + def initParameters(self): + """ init """ + pass + def registerSwitches(self): + ''' + Registers all switches that can be used while calling the script from the + command line interface. + ''' + self.registerSwitch("H:", "host=", "BDII host") + self.registerSwitch("V:", "vo=", "vo") + self.registerArgument(" info: requested instance", + values=["ce", "ce-state", "ce-cluster", "ce-vo", "site"]) + self.registerArgument(("Site: Name of the Site (i.e. CERN-PROD)", + "CE: Name of the CE (i.e. cccreamceli05.in2p3.fr)")) -def parseSwitches(self): - ''' - Parses the arguments passed by the user - ''' - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() + def parseSwitches(self): + ''' + Parses the arguments passed by the user + ''' - if not len(args) == 2: - self.showHelp() + unprocSwitches, args = self.parseCommandLine(ignoreErrors=True) - params = {} - params['ce'] = None - params['site'] = None - params['host'] = None - params['vo'] = None - params['info'] = args[0] - ret = getProxyInfo(disableVOMS=True) + params = {} + params['ce'] = None + params['site'] = None + params['host'] = None + params['vo'] = None + params['info'] = args[0] + ret = getProxyInfo(disableVOMS=True) - if ret['OK'] and 'group' in ret['Value']: - params['vo'] = getVOForGroup(ret['Value']['group']) - else: - self.gLogger.error('Could not determine VO') - self.showHelp() + if ret['OK'] and 'group' in ret['Value']: + params['vo'] = getVOForGroup(ret['Value']['group']) + else: + self.gLogger.error('Could not determine VO') + self.showHelp() - if params['info'] in ['ce', 'ce-state', 'ce-cluster', 'ce-vo']: - params['ce'] = args[1] - elif params['info'] in ['site']: - params['site'] = args[1] - else: - self.gLogger.error('Wrong argument value') - self.showHelp() + if params['info'] in ['ce', 'ce-state', 'ce-cluster', 'ce-vo']: + params['ce'] = args[1] + elif params['info'] in ['site']: + params['site'] = args[1] + else: + self.gLogger.error('Wrong argument value') + self.showHelp() - for unprocSw in self.getUnprocessedSwitches(): - if unprocSw[0] in ("H", "host"): - params['host'] = unprocSw[1] - if unprocSw[0] in ("V", "vo"): - params['vo'] = unprocSw[1] + for unprocSw in unprocSwitches: + if unprocSw[0] in ("H", "host"): + params['host'] = unprocSw[1] + if unprocSw[0] in ("V", "vo"): + params['vo'] = unprocSw[1] - return params + return params def getInfo(params): @@ -133,12 +129,12 @@ def showInfo(result, info): print("}") -@DIRACScript() +@BdiiInfo() def main(self): # Script initialization - registerSwitches(self) + self.registerSwitches() # registerUsageMessage() - params = parseSwitches(self) + params = self.parseSwitches() result = getInfo(params) showInfo(result, params['info']) 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 968f4b52da7..a01cc9bf8ec 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_check_config_options.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_check_config_options.py @@ -24,14 +24,11 @@ from diraccfg import CFG from DIRAC import gLogger, S_ERROR, S_OK, gConfig - -from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Utilities.List import fromChar - -LOG = gLogger +from DIRAC.Core.Utilities.DIRACScript import DIRACScript -class CheckConfig(object): +class CheckConfig(DIRACScript): """Compare the ConfigTemplate with current configuration.""" def __init__(self): @@ -70,6 +67,20 @@ def _setShowMissingOptions(self, _): self.showMissingOptions = True return S_OK() + def _setSwitches(self): + self.registerSwitch("S:", "system=", "Systems to check, by default all of them are checked", self._setSystems) + self.registerSwitch("M", "modified", "Show entries which differ from the default", self._setShowModified) + self.registerSwitch("A", "added", "Show entries which do not exist in ConfigTemplate", self._setShowAdded) + self.registerSwitch("U", "missingSection", "Show sections which do not exist in the current configuration", + self._setShowMissingSections) + self.registerSwitch("O", "missingOption", "Show options which do not exist in the current configuration", + self._setShowMissingOptions) + + self.parseCommandLine(ignoreErrors=True) + if not any([self.showModified, self.showAdded, self.showMissingSections, self.showMissingOptions]): + gLogger.error("\nERROR: Set at least one of the flags M A U O") + self.showHelp() + def _check(self): """Obtain default configuration and current configuration and print the diff.""" cfg = CFG() @@ -85,10 +96,10 @@ def _check(self): currentCfg = currentCfg['Value'] diff = currentCfg.getModifications(cfg, ignoreOrder=True, ignoreComments=True) - LOG.debug("*" * 80) - LOG.debug("Default Configuration: %s" % str(cfg)) - LOG.debug("*" * 80) - LOG.debug("Current Configuration: %s " % str(currentCfg)) + gLogger.debug("*" * 80) + gLogger.debug("Default Configuration: %s" % str(cfg)) + gLogger.debug("*" * 80) + gLogger.debug("Current Configuration: %s " % str(currentCfg)) for entry in diff: self._printDiff(entry) @@ -175,40 +186,32 @@ def _printDiff(self, entry, level=''): self._printDiff(change, fullPath) elif diffType == 'modOpt': if self.showModified: - LOG.notice("Changed option %r from %r" % (fullPath, changes)) + gLogger.notice("Changed option %r from %r" % (fullPath, changes)) elif diffType == 'delOpt': if self.showAdded: - LOG.notice("Option %r does not exist in template" % fullPath) + gLogger.notice("Option %r does not exist in template" % fullPath) elif diffType == 'delSec': if self.showAdded: - LOG.notice("Section %r does not exist in template" % fullPath) + gLogger.notice("Section %r does not exist in template" % fullPath) elif diffType == 'addSec': if self.showMissingSections: - LOG.notice("Section %r not found in current configuration: %s" % (fullPath, pformat(changes))) + gLogger.notice("Section %r not found in current configuration: %s" % (fullPath, pformat(changes))) elif diffType == 'addOpt': if self.showMissingOptions: - LOG.notice("Option %r not found in current configuration. Default value is %r" % (fullPath, changes)) + gLogger.notice("Option %r not found in current configuration. Default value is %r" % (fullPath, changes)) else: - LOG.error("Unknown DiffType", "%s, %s, %s" % (diffType, fullPath, changes)) + gLogger.error("Unknown DiffType", "%s, %s, %s" % (diffType, fullPath, changes)) def run(self): - """Run configuration comparison.""" - if not any([self.showModified, self.showAdded, self.showMissingSections, self.showMissingOptions]): - LOG.error("\nERROR: Set at least one of the flags M A U O") - return S_ERROR() - + """ Run configuration comparison.""" + self._setSwitches() self._check() return S_OK() -@DIRACScript() +@CheckConfig() def main(self): - checkConfig = CheckConfig() - self.registerSwitches(checkConfig.switches) - self.parseCommandLine(ignoreErrors=True) - - if not checkConfig.run()['OK']: - self.showHelp() + self.run() if __name__ == "__main__": diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py index 289564393fe..4d912e9e287 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_sort_cs_sites.py @@ -7,12 +7,6 @@ Sort site names at CS in "/Resources" section. Sort can be alphabetic or by country postfix in a site name. Alphabetic sort is default (i.e. LCG.IHEP.cn, LCG.IHEP.su, LCG.IN2P3.fr) -Usage: - dirac-admin-sort-cs-sites [options]
- -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 @@ -24,47 +18,44 @@ __RCSID__ = "$Id$" from DIRAC import gLogger, exit as DIRACExit - +from DIRAC.Core.Utilities.Time import dateTime, toString from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Security.ProxyInfo import getProxyInfo -from DIRAC.ConfigurationSystem.Client.Helpers.Registry import getPropertiesForGroup from DIRAC.ConfigurationSystem.Client.CSAPI import CSAPI -from DIRAC.Core.Utilities.Time import dateTime, toString - -global SORTBYNAME, REVERSE -SORTBYNAME = True -REVERSE = False - +from DIRAC.ConfigurationSystem.Client.Helpers.Registry import getPropertiesForGroup -def sortBy(arg): - global SORTBYNAME - SORTBYNAME = False +class SortCSSites(DIRACScript): + def initParameters(self): + """ init """ + self.SORTBYNAME = True + self.REVERSE = False -def isReverse(arg): - global REVERSE - REVERSE = True + def sortBy(self, arg): + self.SORTBYNAME = False + def isReverse(self, arg): + self.REVERSE = True -def country(arg): - cb = arg.split(".") - if not len(cb) == 3: - gLogger.error("%s is not in GRID.NAME.COUNTRY format ") - return False - return cb[2] + def country(self, arg): + cb = arg.split(".") + if not len(cb) == 3: + gLogger.error("%s is not in GRID.NAME.COUNTRY format ") + return False + return cb[2] -@DIRACScript() +@SortCSSites() def main(self): self.registerSwitch( "C", "country", "Sort site names by country postfix (i.e. LCG.IHEP.cn, LCG.IN2P3.fr, LCG.IHEP.su)", - sortBy) - self.registerSwitch("R", "reverse", "Reverse the sort order", isReverse) - - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() + self.sortBy) + self.registerSwitch("R", "reverse", "Reverse the sort order", self.isReverse) + self.registerArgument(["Section: Name of the subsection in '/Resources/Sites/' for sort (i.e. LCG DIRAC)"], + mandatory=False) + _, args = self.parseCommandLine(ignoreErrors=True) result = getProxyInfo() if not result["OK"]: @@ -107,10 +98,10 @@ def main(self): gLogger.error("Subsection /Resources/Sites/%s does not exists" % i) continue hasRun = True - if SORTBYNAME: - dirty = cfg["Resources"]["Sites"][i].sortAlphabetically(ascending=not REVERSE) + if self.SORTBYNAME: + dirty = cfg["Resources"]["Sites"][i].sortAlphabetically(ascending=not self.REVERSE) else: - dirty = cfg["Resources"]["Sites"][i].sortByKey(key=country, reverse=REVERSE) + dirty = cfg["Resources"]["Sites"][i].sortByKey(key=self.country, reverse=self.REVERSE) if dirty: isDirty = True diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py index f38127e7e8a..8a6b700ec2b 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_admin_voms_sync.py @@ -15,47 +15,42 @@ import six from DIRAC import gLogger, exit as DIRACExit, S_OK - from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.ConfigurationSystem.Client.VOMS2CSSynchronizer import VOMS2CSSynchronizer from DIRAC.Core.Utilities.Proxy import executeWithUserProxy from DIRAC.ConfigurationSystem.Client.Helpers.Registry import getVOOption -dryRun = False -voName = None - +class SortCSSites(DIRACScript): -def setDryRun(value): - global dryRun - dryRun = True - return S_OK() + def initParameters(self): + """ init """ + self.dryRun = False + self.voName = None + def setDryRun(self, value): + self.dryRun = True + return S_OK() -def setVO(value): - global voName - voName = value - return S_OK() + def setVO(self, value): + self.voName = value + return S_OK() @DIRACScript() def main(self): - self.registerSwitch("V:", "vo=", "VO name", setVO) - self.registerSwitch("D", "dryRun", "Dry run", setDryRun) + self.registerSwitch("V:", "vo=", "VO name", self.setVO) + self.registerSwitch("D", "dryRun", "Dry run", self.setDryRun) self.parseCommandLine(ignoreErrors=True) @executeWithUserProxy def syncCSWithVOMS(vomsSync): return vomsSync.syncCSWithVOMS() - def getVOAdmin(voName): - voAdminUser = getVOOption(voName, "VOAdmin") - voAdminGroup = getVOOption(voName, "VOAdminGroup", getVOOption(voName, "DefaultGroup")) - return voAdminUser, voAdminGroup - - voAdminUser, voAdminGroup = getVOAdmin(voName) + voAdminUser = getVOOption(self.voName, "VOAdmin") + voAdminGroup = getVOOption(self.voName, "VOAdminGroup", getVOOption(self.voName, "DefaultGroup")) - vomsSync = VOMS2CSSynchronizer(voName) + vomsSync = VOMS2CSSynchronizer(self.voName) result = syncCSWithVOMS(vomsSync, # pylint: disable=unexpected-keyword-arg proxyUserName=voAdminUser, proxyUserGroup=voAdminGroup) @@ -76,7 +71,7 @@ def getVOAdmin(voName): csapi = resultDict.get("CSAPI") if csapi and csapi.csModified: - if dryRun: + if self.dryRun: gLogger.notice("There are changes to Registry ready to commit, skipped because of dry run") else: yn = six.moves.input("There are changes to Registry ready to commit, do you want to proceed ? [Y|n]:") diff --git a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py index d94a9b59ff0..30b8b7961d8 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_cli.py @@ -12,7 +12,6 @@ __RCSID__ = "$Id$" - from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.ConfigurationSystem.Client.CSCLI import CSCLI 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 9ef8c96dee8..495d9bfc3f2 100755 --- a/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_dump_local_cache.py +++ b/src/DIRAC/ConfigurationSystem/scripts/dirac_configuration_dump_local_cache.py @@ -14,39 +14,38 @@ import sys import DIRAC - from DIRAC.Core.Utilities.DIRACScript import DIRACScript +class ConfDumpLocalCaChe(DIRACScript): -@DIRACScript() -def main(self): - self.localCfg.addDefaultEntry("LogLevel", "fatal") - - fileName = "" + def initParameters(self): + """ init """ + self.fileName = "" + self.raw = False - def setFilename(args): - global fileName - fileName = args + def setFilename(self, args): + self.fileName = args return DIRAC.S_OK() - raw = False - - def setRaw(args): - global raw - raw = True + def setRaw(self, args): + self.raw = True return DIRAC.S_OK() - self.registerSwitch("f:", "file=", "Dump Configuration data into ", setFilename) - self.registerSwitch("r", "raw", "Do not make any modification to the data", setRaw) +@ConfDumpLocalCaChe() +def main(self): + self.localCfg.addDefaultEntry("LogLevel", "fatal") + + self.registerSwitch("f:", "file=", "Dump Configuration data into ", self.setFilename) + self.registerSwitch("r", "raw", "Do not make any modification to the data", self.setRaw) self.parseCommandLine() from DIRAC import gConfig, gLogger - result = gConfig.dumpCFGAsLocalCache(fileName, raw) + result = gConfig.dumpCFGAsLocalCache(self.fileName, self.raw) if not result['OK']: print("Error: %s" % result['Message']) sys.exit(1) - if not fileName: + if not self.fileName: print(result['Value']) sys.exit(0) diff --git a/src/DIRAC/Core/Utilities/DIRACScript.py b/src/DIRAC/Core/Utilities/DIRACScript.py index 05a6faf4dc7..0b6b53b87a0 100644 --- a/src/DIRAC/Core/Utilities/DIRACScript.py +++ b/src/DIRAC/Core/Utilities/DIRACScript.py @@ -1,16 +1,16 @@ +""" DIRAC script """ from __future__ import absolute_import from __future__ import division from __future__ import print_function __RCSID__ = "$Id$" -from collections import defaultdict -import functools - import six import sys import os.path import inspect +import functools +from collections import defaultdict if six.PY3: from DIRAC.Core.Utilities.Extensions import entrypointToExtension, extensionsByPriority @@ -29,12 +29,15 @@ def __init__(self): self.alreadyInitialized = False self.doc = inspect.currentframe().f_back.f_globals['__doc__'] self.scriptName = inspect.currentframe().f_back.f_globals['__name__'].split('.')[-1].replace('_', '-') + + # Parse script __doc__'s to create a draft help message self.localCfg = LocalConfiguration() self.localCfg.setUsageMessage(self.doc) + self.showHelp = self.localCfg.showHelp - self.initializeScript() + self.initParameters() - def initializeScript(self): + def initParameters(self): """ Script initialization """ pass diff --git a/src/DIRAC/Core/scripts/dirac_agent.py b/src/DIRAC/Core/scripts/dirac_agent.py index 1c53cd1f06a..be3452cd7d6 100755 --- a/src/DIRAC/Core/scripts/dirac_agent.py +++ b/src/DIRAC/Core/scripts/dirac_agent.py @@ -23,12 +23,9 @@ @DIRACScript() def main(self): - positionalArgs = self.localCfg.getPositionalArguments() - if len(positionalArgs) == 0: - gLogger.fatal("You must specify which agent to run!") - sys.exit(1) + self.localCfg.registerCmdArg("Agent: specify which agent to run") + agentName = self.localCfg.getPositionalArguments(group=True) - agentName = positionalArgs[0] self.localCfg.setConfigurationForAgent(agentName) self.localCfg.addMandatoryEntry("/DIRAC/Setup") self.localCfg.addDefaultEntry("/DIRAC/Security/UseServerCertificate", "yes") diff --git a/src/DIRAC/Core/scripts/dirac_configure.py b/src/DIRAC/Core/scripts/dirac_configure.py index 8a5b57de8e6..c069bd4c33e 100755 --- a/src/DIRAC/Core/scripts/dirac_configure.py +++ b/src/DIRAC/Core/scripts/dirac_configure.py @@ -4,46 +4,48 @@ # Author : Ricardo Graciani ######################################################################## """ - Main script to write dirac.cfg for a new DIRAC installation and initial download of CAs and CRLs - if necessary. - - To be used by VO specific scripts to configure new DIRAC installations - - Other arguments will take proper defaults if not defined. - - Additionally all options can all be passed inside a .cfg file passed as argument. - The following options are recognized:: - - Setup - ConfigurationServer - IncludeAllServers - Gateway - SiteName - CEName - VirtualOrganization - UseServerCertificate - SkipCAChecks - SkipCADownload - UseVersionsDir - Architecture - LocalSE - LogLevel - - As in any other script command line option take precedence over .cfg files passed as arguments. - The combination of both is written into the installed dirac.cfg. - - Notice: It will not overwrite exiting info in current dirac.cfg if it exists. - - Example: dirac-configure -d - -S LHCb-Development - -C 'dips://lhcbprod.pic.es:9135/Configuration/Server' - -W 'dips://lhcbprod.pic.es:9135' - --SkipCAChecks - +Main script to write dirac.cfg for a new DIRAC installation and initial download of CAs and CRLs if necessary. + +To be used by VO specific scripts to configure new DIRAC installations + +Additionally all options can all be passed inside a .cfg file, see the `--cfg` option. +The following options are recognized:: + + Setup + ConfigurationServer + IncludeAllServers + Gateway + SiteName + CEName + VirtualOrganization + UseServerCertificate + SkipCAChecks + SkipCADownload + UseVersionsDir + Architecture + LocalSE + LogLevel + +Setup and ConfigurationServer(Gateway) is mandatory options. + +As in any other script command line option take precedence over .cfg files. +The combination of both is written into the installed dirac.cfg. + +Notice: It will not overwrite exiting info in current dirac.cfg if it exists. + +Example: + $ dirac-configure -d + -S LHCb-Development + -C 'dips://lhcbprod.pic.es:9135/Configuration/Server' + -W 'dips://lhcbprod.pic.es:9135' + --SkipCAChecks """ from __future__ import absolute_import from __future__ import division from __future__ import print_function + +__RCSID__ = "$Id$" + import sys import os @@ -53,35 +55,32 @@ from DIRAC.Core.Utilities.File import mkDir from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Security.ProxyInfo import getProxyInfo -from DIRAC.ConfigurationSystem.Client.Helpers import cfgInstallPath, cfgPath, Registry from DIRAC.Core.Utilities.SiteSEMapping import getSEsForSite +from DIRAC.ConfigurationSystem.Client.Helpers import cfgInstallPath, cfgPath, Registry from DIRAC.FrameworkSystem.Client.BundleDeliveryClient import BundleDeliveryClient -__RCSID__ = "$Id$" - -class ConfigureInit(object): +class ConfigureInit(DIRACScript): - def __init__(self, script): - self.__script = script - self.logLevel = None + def initParameters(self): + self.vo = None self.setup = None - self.configurationServer = None - self.includeAllServers = False - self.gatewayServer = None + self.update = False + self.ceName = None + self.localSE = None + self.logLevel = None self.siteName = None - self.useServerCert = False + self.outputFile = '' + self.extensions = '' + self.architecture = None self.skipCAChecks = False - self.skipCADownload = False + self.useServerCert = False + self.gatewayServer = None self.useVersionsDir = False - self.architecture = None - self.localSE = None - self.ceName = None - self.vo = None - self.update = False - self.outputFile = '' + self.skipCADownload = False self.skipVOMSDownload = False - self.extensions = '' + self.includeAllServers = False + self.configurationServer = None self.switches = [ ("S:", "Setup=", "Set as DIRAC setup", self.setSetup), ("e:", "Extensions=", "Set as DIRAC extensions", self.setExtensions), @@ -131,7 +130,7 @@ def setSetup(self, optionValue): def setSiteName(self, optionValue): self.siteName = optionValue - self.__script.localCfg.addDefaultEntry('/LocalSite/Site', self.siteName) + self.localCfg.addDefaultEntry('/LocalSite/Site', self.siteName) DIRAC.__siteName = False DIRAC.gConfig.setOptionValue(cfgInstallPath('SiteName'), self.siteName) return DIRAC.S_OK() @@ -168,7 +167,7 @@ def setUseVersionsDir(self, optionValue): def setArchitecture(self, optionValue): self.architecture = optionValue - self.__script.localCfg.addDefaultEntry('/LocalSite/Architecture', self.architecture) + self.localCfg.addDefaultEntry('/LocalSite/Architecture', self.architecture) DIRAC.gConfig.setOptionValue(cfgInstallPath('Architecture'), self.architecture) return DIRAC.S_OK() @@ -262,7 +261,7 @@ def runConfigurationWizard(params): def setVO(self, optionValue): self.vo = optionValue - self.__script.localCfg.addDefaultEntry('/DIRAC/VirtualOrganization', self.vo) + self.localCfg.addDefaultEntry('/DIRAC/VirtualOrganization', self.vo) DIRAC.gConfig.setOptionValue(cfgInstallPath('VirtualOrganization'), self.vo) return DIRAC.S_OK() @@ -276,299 +275,305 @@ def setExtensions(self, optionValue): DIRAC.gConfig.setOptionValue(cfgInstallPath('Extensions'), self.extensions) return DIRAC.S_OK() - def run(self): - """ Run initialization """ - if not self.logLevel: - self.logLevel = DIRAC.gConfig.getValue(cfgInstallPath('LogLevel'), '') - if self.logLevel: - DIRAC.gLogger.setLevel(self.logLevel) - else: - DIRAC.gConfig.setOptionValue(cfgInstallPath('LogLevel'), self.logLevel) - if not self.gatewayServer: - newGatewayServer = DIRAC.gConfig.getValue(cfgInstallPath('Gateway'), '') - if newGatewayServer: - self.setGateway(newGatewayServer) - if not self.configurationServer: - newConfigurationServer = DIRAC.gConfig.getValue(cfgInstallPath('ConfigurationServer'), '') - if newConfigurationServer: - self.setServer(newConfigurationServer) - if not self.includeAllServers: - newIncludeAllServer = DIRAC.gConfig.getValue(cfgInstallPath('IncludeAllServers'), False) - if newIncludeAllServer: - self.setAllServers(True) - if not self.setup: - newSetup = DIRAC.gConfig.getValue(cfgInstallPath('Setup'), '') - if newSetup: - self.setSetup(newSetup) - if not self.siteName: - newSiteName = DIRAC.gConfig.getValue(cfgInstallPath('SiteName'), '') - if newSiteName: - self.setSiteName(newSiteName) - if not self.ceName: - newCEName = DIRAC.gConfig.getValue(cfgInstallPath('CEName'), '') - if newCEName: - self.setCEName(newCEName) - if not self.useServerCert: - newUserServerCert = DIRAC.gConfig.getValue(cfgInstallPath('UseServerCertificate'), False) - if newUserServerCert: - self.setServerCert(newUserServerCert) - if not self.skipCAChecks: - newSkipCAChecks = DIRAC.gConfig.getValue(cfgInstallPath('SkipCAChecks'), False) - if newSkipCAChecks: - self.setSkipCAChecks(newSkipCAChecks) - if not self.skipCADownload: - newSkipCADownload = DIRAC.gConfig.getValue(cfgInstallPath('SkipCADownload'), False) - if newSkipCADownload: - self.setSkipCADownload(newSkipCADownload) - if not self.useVersionsDir: - newUseVersionsDir = DIRAC.gConfig.getValue(cfgInstallPath('UseVersionsDir'), False) - if newUseVersionsDir: - self.setUseVersionsDir(newUseVersionsDir) - # Set proper Defaults in configuration (even if they will be properly overwrite by gComponentInstaller - instancePath = os.path.dirname(os.path.dirname(DIRAC.rootPath)) - rootPath = os.path.join(instancePath, 'pro') - DIRAC.gConfig.setOptionValue(cfgInstallPath('InstancePath'), instancePath) - DIRAC.gConfig.setOptionValue(cfgInstallPath('RootPath'), rootPath) - if not self.architecture: - newArchitecture = DIRAC.gConfig.getValue(cfgInstallPath('Architecture'), '') - if newArchitecture: - self.setArchitecture(newArchitecture) - if not self.vo: - newVO = DIRAC.gConfig.getValue(cfgInstallPath('VirtualOrganization'), '') - if newVO: - self.setVO(newVO) - if not self.extensions: - newExtensions = DIRAC.gConfig.getValue(cfgInstallPath('Extensions'), '') - if newExtensions: - self.setExtensions(newExtensions) - - DIRAC.gLogger.notice('Executing: %s ' % (' '.join(sys.argv))) - DIRAC.gLogger.notice('Checking DIRAC installation at "%s"' % DIRAC.rootPath) - - if self.update: - if self.outputFile: - DIRAC.gLogger.notice('Will update the output file %s' % self.outputFile) - else: - DIRAC.gLogger.notice('Will update %s' % DIRAC.gConfig.diracConfigFilePath) - - if self.setup: - DIRAC.gLogger.verbose('/DIRAC/Setup =', self.setup) - if self.vo: - DIRAC.gLogger.verbose('/DIRAC/VirtualOrganization =', self.vo) - if self.configurationServer: - DIRAC.gLogger.verbose('/DIRAC/Configuration/Servers =', self.configurationServer) - - if self.siteName: - DIRAC.gLogger.verbose('/LocalSite/Site =', self.siteName) - if self.architecture: - DIRAC.gLogger.verbose('/LocalSite/Architecture =', self.architecture) - if self.localSE: - DIRAC.gLogger.verbose('/LocalSite/localSE =', self.localSE) +@ConfigureInit() +def main(self): + self.disableCS() + + self.registerSwitches(self.switches) + self.parseCommandLine(ignoreErrors=True) - if not self.useServerCert: - DIRAC.gLogger.verbose('/DIRAC/Security/UseServerCertificate =', 'no') - # Being sure it was not there before - self.__script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') - self.__script.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'no') + if not self.logLevel: + self.logLevel = DIRAC.gConfig.getValue(cfgInstallPath('LogLevel'), '') + if self.logLevel: + DIRAC.gLogger.setLevel(self.logLevel) + else: + DIRAC.gConfig.setOptionValue(cfgInstallPath('LogLevel'), self.logLevel) + + if not self.gatewayServer: + newGatewayServer = DIRAC.gConfig.getValue(cfgInstallPath('Gateway'), '') + if newGatewayServer: + self.setGateway(newGatewayServer) + + if not self.configurationServer: + newConfigurationServer = DIRAC.gConfig.getValue(cfgInstallPath('ConfigurationServer'), '') + if newConfigurationServer: + self.setServer(newConfigurationServer) + + if not self.includeAllServers: + newIncludeAllServer = DIRAC.gConfig.getValue(cfgInstallPath('IncludeAllServers'), False) + if newIncludeAllServer: + self.setAllServers(True) + + if not self.setup: + newSetup = DIRAC.gConfig.getValue(cfgInstallPath('Setup'), '') + if newSetup: + self.setSetup(newSetup) + + if not self.siteName: + newSiteName = DIRAC.gConfig.getValue(cfgInstallPath('SiteName'), '') + if newSiteName: + self.setSiteName(newSiteName) + + if not self.ceName: + newCEName = DIRAC.gConfig.getValue(cfgInstallPath('CEName'), '') + if newCEName: + self.setCEName(newCEName) + + if not self.useServerCert: + newUserServerCert = DIRAC.gConfig.getValue(cfgInstallPath('UseServerCertificate'), False) + if newUserServerCert: + self.setServerCert(newUserServerCert) + + if not self.skipCAChecks: + newSkipCAChecks = DIRAC.gConfig.getValue(cfgInstallPath('SkipCAChecks'), False) + if newSkipCAChecks: + self.setSkipCAChecks(newSkipCAChecks) + + if not self.skipCADownload: + newSkipCADownload = DIRAC.gConfig.getValue(cfgInstallPath('SkipCADownload'), False) + if newSkipCADownload: + self.setSkipCADownload(newSkipCADownload) + + if not self.useVersionsDir: + newUseVersionsDir = DIRAC.gConfig.getValue(cfgInstallPath('UseVersionsDir'), False) + if newUseVersionsDir: + self.setUseVersionsDir(newUseVersionsDir) + # Set proper Defaults in configuration (even if they will be properly overwrite by gComponentInstaller + instancePath = os.path.dirname(os.path.dirname(DIRAC.rootPath)) + rootPath = os.path.join(instancePath, 'pro') + DIRAC.gConfig.setOptionValue(cfgInstallPath('InstancePath'), instancePath) + DIRAC.gConfig.setOptionValue(cfgInstallPath('RootPath'), rootPath) + + if not self.architecture: + newArchitecture = DIRAC.gConfig.getValue(cfgInstallPath('Architecture'), '') + if newArchitecture: + self.setArchitecture(newArchitecture) + + if not self.vo: + newVO = DIRAC.gConfig.getValue(cfgInstallPath('VirtualOrganization'), '') + if newVO: + self.setVO(newVO) + + if not self.extensions: + newExtensions = DIRAC.gConfig.getValue(cfgInstallPath('Extensions'), '') + if newExtensions: + self.setExtensions(newExtensions) + + DIRAC.gLogger.notice('Executing: %s ' % (' '.join(sys.argv))) + DIRAC.gLogger.notice('Checking DIRAC installation at "%s"' % DIRAC.rootPath) + + if self.update: + if self.outputFile: + DIRAC.gLogger.notice('Will update the output file %s' % self.outputFile) else: - DIRAC.gLogger.verbose('/DIRAC/Security/UseServerCertificate =', 'yes') - # Being sure it was not there before - self.__script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') - self.__script.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') + DIRAC.gLogger.notice('Will update %s' % DIRAC.gConfig.diracConfigFilePath) + + if self.setup: + DIRAC.gLogger.verbose('/DIRAC/Setup =', self.setup) + if self.vo: + DIRAC.gLogger.verbose('/DIRAC/VirtualOrganization =', self.vo) + if self.configurationServer: + DIRAC.gLogger.verbose('/DIRAC/Configuration/Servers =', self.configurationServer) + if self.siteName: + DIRAC.gLogger.verbose('/LocalSite/Site =', self.siteName) + if self.architecture: + DIRAC.gLogger.verbose('/LocalSite/Architecture =', self.architecture) + if self.localSE: + DIRAC.gLogger.verbose('/LocalSite/localSE =', self.localSE) + + if not self.useServerCert: + DIRAC.gLogger.verbose('/DIRAC/Security/UseServerCertificate =', 'no') + # Being sure it was not there before + self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + self.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'no') + else: + DIRAC.gLogger.verbose('/DIRAC/Security/UseServerCertificate =', 'yes') + # Being sure it was not there before + self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + self.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') + + host = DIRAC.gConfig.getValue(cfgInstallPath("Host"), "") + if host: + DIRAC.gConfig.setOptionValue(cfgPath("DIRAC", "Hostname"), host) + + if self.skipCAChecks: + DIRAC.gLogger.verbose('/DIRAC/Security/SkipCAChecks =', 'yes') + # Being sure it was not there before + self.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') + self.localCfg.addDefaultEntry('/DIRAC/Security/SkipCAChecks', 'yes') + else: + # Necessary to allow initial download of CA's + if not self.skipCADownload: + DIRAC.gConfig.setOptionValue('/DIRAC/Security/SkipCAChecks', 'yes') + if not self.skipCADownload: + self.enableCS() + try: + dirName = os.path.join(DIRAC.rootPath, 'etc', 'grid-security', 'certificates') + mkDir(dirName) + except BaseException: + DIRAC.gLogger.exception() + DIRAC.gLogger.fatal('Fail to create directory:', dirName) + DIRAC.exit(-1) + try: + bdc = BundleDeliveryClient() + result = bdc.syncCAs() + if result['OK']: + result = bdc.syncCRLs() + except Exception as e: + DIRAC.gLogger.error('Failed to sync CAs and CRLs: %s' % str(e)) - host = DIRAC.gConfig.getValue(cfgInstallPath("Host"), "") - if host: - DIRAC.gConfig.setOptionValue(cfgPath("DIRAC", "Hostname"), host) + if not self.skipCAChecks: + self.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') - if self.skipCAChecks: - DIRAC.gLogger.verbose('/DIRAC/Security/SkipCAChecks =', 'yes') + if self.ceName or self.siteName: + # This is used in the pilot context, we should have a proxy, or a certificate, and access to CS + if self.useServerCert: # Being sure it was not there before - self.__script.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') - self.__script.localCfg.addDefaultEntry('/DIRAC/Security/SkipCAChecks', 'yes') + self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + self.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') + self.enableCS() + # Get the site resource section + gridSections = DIRAC.gConfig.getSections('/Resources/Sites/') + if not gridSections['OK']: + DIRAC.gLogger.warn('Could not get grid sections list') + grids = [] else: - # Necessary to allow initial download of CA's - if not self.skipCADownload: - DIRAC.gConfig.setOptionValue('/DIRAC/Security/SkipCAChecks', 'yes') - if not self.skipCADownload: - self.__script.enableCS() - try: - dirName = os.path.join(DIRAC.rootPath, 'etc', 'grid-security', 'certificates') - mkDir(dirName) - except BaseException: - DIRAC.gLogger.exception() - DIRAC.gLogger.fatal('Fail to create directory:', dirName) - DIRAC.exit(-1) - try: - bdc = BundleDeliveryClient() - result = bdc.syncCAs() - if result['OK']: - result = bdc.syncCRLs() - except Exception as e: - DIRAC.gLogger.error('Failed to sync CAs and CRLs: %s' % str(e)) - - if not self.skipCAChecks: - self.__script.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') - - if self.ceName or self.siteName: - # This is used in the pilot context, we should have a proxy, or a certificate, and access to CS - if self.useServerCert: - # Being sure it was not there before - self.__script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') - self.__script.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') - self.__script.enableCS() - # Get the site resource section - gridSections = DIRAC.gConfig.getSections('/Resources/Sites/') - if not gridSections['OK']: - DIRAC.gLogger.warn('Could not get grid sections list') - grids = [] - else: - grids = gridSections['Value'] - # try to get siteName from ceName or Local SE from siteName using Remote Configuration - for grid in grids: - siteSections = DIRAC.gConfig.getSections('/Resources/Sites/%s/' % grid) - if not siteSections['OK']: - DIRAC.gLogger.warn('Could not get %s site list' % grid) - sites = [] - else: - sites = siteSections['Value'] - - if not self.siteName: - if self.ceName: - for site in sites: - res = DIRAC.gConfig.getSections('/Resources/Sites/%s/%s/CEs/' % (grid, site), []) - if not res['OK']: - DIRAC.gLogger.warn('Could not get %s CEs list' % site) - if self.ceName in res['Value']: - self.siteName = site - break - if self.siteName: - DIRAC.gLogger.notice('Setting /LocalSite/Site = %s' % self.siteName) - self.__script.localCfg.addDefaultEntry('/LocalSite/Site', self.siteName) - DIRAC.__siteName = False - if self.ceName: - DIRAC.gLogger.notice('Setting /LocalSite/GridCE = %s' % self.ceName) - self.__script.localCfg.addDefaultEntry('/LocalSite/GridCE', self.ceName) - - if not self.localSE and self.siteName in sites: - self.localSE = getSEsForSite(self.siteName) - if self.localSE['OK'] and self.localSE['Value']: - self.localSE = ','.join(self.localSE['Value']) - DIRAC.gLogger.notice('Setting /LocalSite/LocalSE =', self.localSE) - self.__script.localCfg.addDefaultEntry('/LocalSite/LocalSE', self.localSE) - break - - if self.gatewayServer: - DIRAC.gLogger.verbose('/DIRAC/Gateways/%s =' % DIRAC.siteName(), self.gatewayServer) - self.__script.localCfg.addDefaultEntry('/DIRAC/Gateways/%s' % DIRAC.siteName(), self.gatewayServer) - - # Create the local cfg if it is not yet there - if not self.outputFile: - self.outputFile = DIRAC.gConfig.diracConfigFilePath - self.outputFile = os.path.abspath(self.outputFile) - if not os.path.exists(self.outputFile): - configDir = os.path.dirname(self.outputFile) - mkDir(configDir) - self.update = True - DIRAC.gConfig.dumpLocalCFGToFile(self.outputFile) - - if self.includeAllServers: - # We need user proxy or server certificate to continue in order to get all the CS URLs - if not self.useServerCert: - self.__script.enableCS() - result = getProxyInfo() - if not result['OK']: - DIRAC.gLogger.notice('Configuration is not completed because no user proxy is available') - DIRAC.gLogger.notice('Create one using dirac-proxy-init and execute again with -F option') - sys.exit(1) + grids = gridSections['Value'] + # try to get siteName from ceName or Local SE from siteName using Remote Configuration + for grid in grids: + siteSections = DIRAC.gConfig.getSections('/Resources/Sites/%s/' % grid) + if not siteSections['OK']: + DIRAC.gLogger.warn('Could not get %s site list' % grid) + sites = [] else: - self.__script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') - # When using Server Certs CA's will be checked, the flag only disables initial download - # this will be replaced by the use of SkipCADownload - self.__script.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') - self.__script.enableCS() - - DIRAC.gConfig.setOptionValue('/DIRAC/Configuration/Servers', ','.join(DIRAC.gConfig.getServersList())) - DIRAC.gLogger.verbose('/DIRAC/Configuration/Servers =', ','.join(DIRAC.gConfig.getServersList())) - - if self.useServerCert: - # always removing before dumping - self.__script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') - self.__script.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') - self.__script.localCfg.deleteOption('/DIRAC/Security/SkipVOMSDownload') - - if self.update: - DIRAC.gConfig.dumpLocalCFGToFile(self.outputFile) - - # ## LAST PART: do the vomsdir/vomses magic - - # This has to be done for all VOs in the installation - - if self.skipVOMSDownload: - # We stop here - sys.exit(0) - - result = Registry.getVOMSServerInfo() - if not result['OK']: - sys.exit(1) - - error = '' - vomsDict = result['Value'] - for vo in vomsDict: - voName = vomsDict[vo]['VOMSName'] - vomsDirPath = os.path.join(DIRAC.rootPath, 'etc', 'grid-security', 'vomsdir', voName) - vomsesDirPath = os.path.join(DIRAC.rootPath, 'etc', 'grid-security', 'vomses') - for path in (vomsDirPath, vomsesDirPath): - mkDir(path) - vomsesLines = [] - for vomsHost in vomsDict[vo].get('Servers', {}): - hostFilePath = os.path.join(vomsDirPath, "%s.lsc" % vomsHost) - try: - DN = vomsDict[vo]['Servers'][vomsHost]['DN'] - CA = vomsDict[vo]['Servers'][vomsHost]['CA'] - port = vomsDict[vo]['Servers'][vomsHost]['Port'] - if not DN or not CA or not port: - DIRAC.gLogger.error('DN = %s' % DN) - DIRAC.gLogger.error('CA = %s' % CA) - DIRAC.gLogger.error('Port = %s' % port) - DIRAC.gLogger.error('Missing Parameter for %s' % vomsHost) - continue - with open(hostFilePath, "wt") as fd: - fd.write("%s\n%s\n" % (DN, CA)) - vomsesLines.append('"%s" "%s" "%s" "%s" "%s" "24"' % (voName, vomsHost, port, DN, voName)) - DIRAC.gLogger.notice("Created vomsdir file %s" % hostFilePath) - except Exception: - DIRAC.gLogger.exception("Could not generate vomsdir file for host", vomsHost) - error = "Could not generate vomsdir file for VO %s, host %s" % (voName, vomsHost) - try: - vomsesFilePath = os.path.join(vomsesDirPath, voName) - with open(vomsesFilePath, "wt") as fd: - fd.write("%s\n" % "\n".join(vomsesLines)) - DIRAC.gLogger.notice("Created vomses file %s" % vomsesFilePath) - except Exception: - DIRAC.gLogger.exception("Could not generate vomses file") - error = "Could not generate vomses file for VO %s" % voName + sites = siteSections['Value'] + + if not self.siteName: + if self.ceName: + for site in sites: + res = DIRAC.gConfig.getSections('/Resources/Sites/%s/%s/CEs/' % (grid, site), []) + if not res['OK']: + DIRAC.gLogger.warn('Could not get %s CEs list' % site) + if self.ceName in res['Value']: + self.siteName = site + break + if self.siteName: + DIRAC.gLogger.notice('Setting /LocalSite/Site = %s' % self.siteName) + self.localCfg.addDefaultEntry('/LocalSite/Site', self.siteName) + DIRAC.__siteName = False + if self.ceName: + DIRAC.gLogger.notice('Setting /LocalSite/GridCE = %s' % self.ceName) + self.localCfg.addDefaultEntry('/LocalSite/GridCE', self.ceName) + + if not self.localSE and self.siteName in sites: + self.localSE = getSEsForSite(self.siteName) + if self.localSE['OK'] and self.localSE['Value']: + self.localSE = ','.join(self.localSE['Value']) + DIRAC.gLogger.notice('Setting /LocalSite/LocalSE =', self.localSE) + self.localCfg.addDefaultEntry('/LocalSite/LocalSE', self.localSE) + break + + if self.gatewayServer: + DIRAC.gLogger.verbose('/DIRAC/Gateways/%s =' % DIRAC.siteName(), self.gatewayServer) + self.localCfg.addDefaultEntry('/DIRAC/Gateways/%s' % DIRAC.siteName(), self.gatewayServer) + + # Create the local cfg if it is not yet there + if not self.outputFile: + self.outputFile = DIRAC.gConfig.diracConfigFilePath + self.outputFile = os.path.abspath(self.outputFile) + if not os.path.exists(self.outputFile): + configDir = os.path.dirname(self.outputFile) + mkDir(configDir) + self.update = True + DIRAC.gConfig.dumpLocalCFGToFile(self.outputFile) - if self.useServerCert: - self.__script.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + if self.includeAllServers: + # We need user proxy or server certificate to continue in order to get all the CS URLs + if not self.useServerCert: + self.enableCS() + result = getProxyInfo() + if not result['OK']: + DIRAC.gLogger.notice('Configuration is not completed because no user proxy is available') + DIRAC.gLogger.notice('Create one using dirac-proxy-init and execute again with -F option') + sys.exit(1) + else: + self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') # When using Server Certs CA's will be checked, the flag only disables initial download # this will be replaced by the use of SkipCADownload - self.__script.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') + self.localCfg.addDefaultEntry('/DIRAC/Security/UseServerCertificate', 'yes') + self.enableCS() - if error: - sys.exit(1) + DIRAC.gConfig.setOptionValue('/DIRAC/Configuration/Servers', ','.join(DIRAC.gConfig.getServersList())) + DIRAC.gLogger.verbose('/DIRAC/Configuration/Servers =', ','.join(DIRAC.gConfig.getServersList())) - sys.exit(0) + if self.useServerCert: + # always removing before dumping + self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + self.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') + self.localCfg.deleteOption('/DIRAC/Security/SkipVOMSDownload') + if self.update: + DIRAC.gConfig.dumpLocalCFGToFile(self.outputFile) -@DIRACScript() -def main(self): - self.disableCS() + # ## LAST PART: do the vomsdir/vomses magic - confInit = ConfigureInit(self) - self.registerSwitches(confInit.switches) - self.parseCommandLine(ignoreErrors=True) + # This has to be done for all VOs in the installation + + if self.skipVOMSDownload: + # We stop here + sys.exit(0) + + result = Registry.getVOMSServerInfo() + if not result['OK']: + sys.exit(1) + + error = '' + vomsDict = result['Value'] + for vo in vomsDict: + voName = vomsDict[vo]['VOMSName'] + vomsDirPath = os.path.join(DIRAC.rootPath, 'etc', 'grid-security', 'vomsdir', voName) + vomsesDirPath = os.path.join(DIRAC.rootPath, 'etc', 'grid-security', 'vomses') + for path in (vomsDirPath, vomsesDirPath): + mkDir(path) + vomsesLines = [] + for vomsHost in vomsDict[vo].get('Servers', {}): + hostFilePath = os.path.join(vomsDirPath, "%s.lsc" % vomsHost) + try: + DN = vomsDict[vo]['Servers'][vomsHost]['DN'] + CA = vomsDict[vo]['Servers'][vomsHost]['CA'] + port = vomsDict[vo]['Servers'][vomsHost]['Port'] + if not DN or not CA or not port: + DIRAC.gLogger.error('DN = %s' % DN) + DIRAC.gLogger.error('CA = %s' % CA) + DIRAC.gLogger.error('Port = %s' % port) + DIRAC.gLogger.error('Missing Parameter for %s' % vomsHost) + continue + with open(hostFilePath, "wt") as fd: + fd.write("%s\n%s\n" % (DN, CA)) + vomsesLines.append('"%s" "%s" "%s" "%s" "%s" "24"' % (voName, vomsHost, port, DN, voName)) + DIRAC.gLogger.notice("Created vomsdir file %s" % hostFilePath) + except Exception: + DIRAC.gLogger.exception("Could not generate vomsdir file for host", vomsHost) + error = "Could not generate vomsdir file for VO %s, host %s" % (voName, vomsHost) + try: + vomsesFilePath = os.path.join(vomsesDirPath, voName) + with open(vomsesFilePath, "wt") as fd: + fd.write("%s\n" % "\n".join(vomsesLines)) + DIRAC.gLogger.notice("Created vomses file %s" % vomsesFilePath) + except Exception: + DIRAC.gLogger.exception("Could not generate vomses file") + error = "Could not generate vomses file for VO %s" % voName + + if self.useServerCert: + self.localCfg.deleteOption('/DIRAC/Security/UseServerCertificate') + # When using Server Certs CA's will be checked, the flag only disables initial download + # this will be replaced by the use of SkipCADownload + self.localCfg.deleteOption('/DIRAC/Security/SkipCAChecks') + + if error: + sys.exit(1) - confInit.run() + sys.exit(0) if __name__ == "__main__": diff --git a/src/DIRAC/Core/scripts/dirac_executor.py b/src/DIRAC/Core/scripts/dirac_executor.py index ef4b7eff825..d803736c216 100755 --- a/src/DIRAC/Core/scripts/dirac_executor.py +++ b/src/DIRAC/Core/scripts/dirac_executor.py @@ -23,10 +23,8 @@ @DIRACScript() def main(self): + self.localCfg.registerCmdArg(["executor: specify which executor to run"]) positionalArgs = self.localCfg.getPositionalArguments() - if len(positionalArgs) == 0: - gLogger.fatal("You must specify which executor to run!") - sys.exit(1) if len(positionalArgs) == 1 and positionalArgs[0].find("/") > -1: mainName = positionalArgs[0] diff --git a/src/DIRAC/Core/scripts/dirac_externals_requirements.py b/src/DIRAC/Core/scripts/dirac_externals_requirements.py index cd01587ca87..41963c30739 100755 --- a/src/DIRAC/Core/scripts/dirac_externals_requirements.py +++ b/src/DIRAC/Core/scripts/dirac_externals_requirements.py @@ -23,20 +23,21 @@ import subprocess as commands from diraccfg import CFG - -from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC import gLogger, rootPath, S_OK +from DIRAC.Core.Utilities.DIRACScript import DIRACScript __RCSID__ = "$Id$" -# Default installation type -instType = "server" +class ExternalsRequirements(DIRACScript): + + def initParameters(self): + # Default installation type + self.instType = "server" -def setInstallType(val): - global instType - instType = val - return S_OK() + def setInstallType(self, val): + self.instType = val + return S_OK() def pipInstall(package, switches=""): @@ -46,11 +47,11 @@ def pipInstall(package, switches=""): return commands.getstatusoutput(cmd) -@DIRACScript() +@ExternalsRequirements() def main(self): self.disableCS() - self.registerSwitch("t:", "type=", "Installation type. 'server' by default.", setInstallType) + self.registerSwitch("t:", "type=", "Installation type. 'server' by default.", self.setInstallType) self.parseCommandLine(ignoreErrors=True) # Collect all the requested python modules to install @@ -65,9 +66,9 @@ def main(self): except Exception: gLogger.verbose("%s not found" % reqFile) continue - reqList = reqCFG.getOption("/RequiredExternals/%s" % instType.capitalize(), []) + reqList = reqCFG.getOption("/RequiredExternals/%s" % self.instType.capitalize(), []) if not reqList: - gLogger.verbose("%s does not have requirements for %s installation" % (entry, instType)) + gLogger.verbose("%s does not have requirements for %s installation" % (entry, self.instType)) continue for req in reqList: reqName = False diff --git a/src/DIRAC/Core/scripts/dirac_info.py b/src/DIRAC/Core/scripts/dirac_info.py index 77e346f5b03..72e0c96716c 100755 --- a/src/DIRAC/Core/scripts/dirac_info.py +++ b/src/DIRAC/Core/scripts/dirac_info.py @@ -34,7 +34,6 @@ import DIRAC from DIRAC import gConfig - from DIRAC.Core.Security.ProxyInfo import getProxyInfo from DIRAC.ConfigurationSystem.Client.Helpers.Registry import getVOForGroup from DIRAC.Core.Utilities.PrettyPrint import printTable diff --git a/src/DIRAC/Core/scripts/dirac_install_db.py b/src/DIRAC/Core/scripts/dirac_install_db.py index 4eccdb02bf5..a3cb0775f32 100755 --- a/src/DIRAC/Core/scripts/dirac_install_db.py +++ b/src/DIRAC/Core/scripts/dirac_install_db.py @@ -1,12 +1,6 @@ #!/usr/bin/env python """ Create a new DB in the MySQL server - -Usage: - dirac-install-db [options] ... DB ... - -Arguments: - DB: Name of the Database (mandatory) """ # Script initialization and parseCommandLine from __future__ import print_function @@ -15,16 +9,13 @@ __RCSID__ = "$Id$" - from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): - self.parseCommandLine() - args = self.getPositionalArgs() - if len(args) < 1: - self.showHelp(exitCode=1) + self.registerArgument(["DB: Name of the Database"]) + _, args = self.parseCommandLine() # Script imports from DIRAC import gConfig diff --git a/src/DIRAC/Core/scripts/dirac_install_web_portal.py b/src/DIRAC/Core/scripts/dirac_install_web_portal.py index ecd7e5a3ebe..a365dcab26b 100755 --- a/src/DIRAC/Core/scripts/dirac_install_web_portal.py +++ b/src/DIRAC/Core/scripts/dirac_install_web_portal.py @@ -12,7 +12,6 @@ __RCSID__ = "$Id$" - from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/Core/scripts/dirac_service.py b/src/DIRAC/Core/scripts/dirac_service.py index 8261413eeb6..72567603c02 100755 --- a/src/DIRAC/Core/scripts/dirac_service.py +++ b/src/DIRAC/Core/scripts/dirac_service.py @@ -15,11 +15,11 @@ import sys -from DIRAC.ConfigurationSystem.Client.LocalConfiguration import LocalConfiguration -from DIRAC.FrameworkSystem.Client.Logger import gLogger from DIRAC.Core.DISET.ServiceReactor import ServiceReactor from DIRAC.Core.Utilities.DErrno import includeExtensionErrors from DIRAC.Core.Utilities.DIRACScript import DIRACScript +from DIRAC.FrameworkSystem.Client.Logger import gLogger +from DIRAC.ConfigurationSystem.Client.LocalConfiguration import LocalConfiguration __RCSID__ = "$Id$" diff --git a/src/DIRAC/Core/scripts/dirac_setup_site.py b/src/DIRAC/Core/scripts/dirac_setup_site.py index 6c53b0304df..4ed637287b0 100755 --- a/src/DIRAC/Core/scripts/dirac_setup_site.py +++ b/src/DIRAC/Core/scripts/dirac_setup_site.py @@ -5,12 +5,6 @@ ######################################################################## """ 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 @@ -18,13 +12,12 @@ __RCSID__ = "$Id$" from DIRAC import S_OK - from DIRAC.Core.Utilities.DIRACScript import DIRACScript -class Params(object): +class SetupSite(DIRACScript): - def __init__(self): + def initParameters(self): self.exitOnError = False def setExitOnError(self, value): @@ -32,16 +25,12 @@ def setExitOnError(self, value): return S_OK() -@DIRACScript() +@SetupSite() def main(self): - cliParams = Params() - self.disableCS() - self.registerSwitch( - "e", - "exitOnError", - "flag to exit on error of any component installation", - cliParams.setExitOnError) + self.registerSwitch("e", "exitOnError", + "flag to exit on error of any component installation", + self.setExitOnError) self.addDefaultOptionValue('/DIRAC/Security/UseServerCertificate', 'yes') self.addDefaultOptionValue('LogLevel', 'INFO') @@ -56,7 +45,7 @@ def main(self): cfg = args[0] from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller - gComponentInstaller.exitOnError = cliParams.exitOnError + gComponentInstaller.exitOnError = self.exitOnError result = gComponentInstaller.setupSite(self.localCfg, cfg) if not result['OK']: diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py index 57818dfc411..a0388fb1760 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_allow_se.py @@ -2,19 +2,16 @@ """ 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 from __future__ import division + __RCSID__ = "$Id$" import DIRAC - from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -34,11 +31,11 @@ def main(self): self.registerSwitch("a", "All", " Allow all access to the storage element") self.registerSwitch("m", "Mute", " Do not send email") self.registerSwitch("S:", "Site=", " Allow all SEs associated to site") + self.registerArgument(["seGroupList: list of SEs or comma-separated SEs"]) - self.parseCommandLine(ignoreErrors=True) + switches, ses = self.parseCommandLine(ignoreErrors=True) - ses = self.getPositionalArgs() - for switch in self.getUnprocessedSwitches(): + for switch in switches: if switch[0].lower() in ("r", "allowread"): read = True if switch[0].lower() in ("w", "allowwrite"): diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py index dedbe7c8293..5554532dce5 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_ban_se.py @@ -3,9 +3,6 @@ """ Ban one or more Storage Elements for usage -Usage: - dirac-admin-ban-se SE1 [SE2 ...] - Example: $ dirac-admin-ban-se M3PEC-disk """ @@ -15,7 +12,6 @@ __RCSID__ = "$Id$" import DIRAC - from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -38,10 +34,11 @@ def main(self): "S:", "Site=", " Ban all SEs associate to site (note that if writing is allowed, check is always allowed)") - self.parseCommandLine(ignoreErrors=True) + self.registerArgument(["seGroupList: list of SEs or comma-separated SEs"]) + + switches, ses = self.parseCommandLine(ignoreErrors=True) - ses = self.getPositionalArgs() - for switch in self.getUnprocessedSwitches(): + for switch in switches: if switch[0].lower() in ("r", "banread"): write = False check = False diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py index 16e0cefdd6c..0fd16382895 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_admin_user_quota.py @@ -2,9 +2,6 @@ """ 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 ------------------------------ @@ -22,14 +19,14 @@ __RCSID__ = "$Id$" import DIRAC - from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): - self.parseCommandLine() - users = self.getPositionalArgs() + self.registerArgument(["User: list of SEs or comma-separated SEs"], mandatory=False) + + _, users = self.parseCommandLine(ignoreErrors=True) from DIRAC import gLogger, gConfig diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py index 2258b2e0465..d2c90ebc51d 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_add_file.py @@ -40,39 +40,39 @@ import os from DIRAC import S_OK - from DIRAC.Core.Utilities.DIRACScript import DIRACScript -overwrite = False +class DMSAddFile(DIRACScript): -def setOverwrite(arg): - global overwrite - overwrite = True - return S_OK() + def initializationScript(self): + """ init """ + self.overwrite = False + def setOverwrite(self, arg): + self.overwrite = True + return S_OK() -def getDict(item_list): - """ - From the input list, populate the dictionary - """ - lfn_dict = {} - lfn_dict['lfn'] = item_list[0].replace('LFN:', '').replace('lfn:', '') - lfn_dict['localfile'] = item_list[1] - lfn_dict['SE'] = item_list[2] - guid = None - if len(item_list) > 3: - guid = item_list[3] - lfn_dict['guid'] = guid - return lfn_dict + def getDict(self, item_list): + """ + From the input list, populate the dictionary + """ + lfn_dict = {} + lfn_dict['lfn'] = item_list[0].replace('LFN:', '').replace('lfn:', '') + lfn_dict['localfile'] = item_list[1] + lfn_dict['SE'] = item_list[2] + guid = None + if len(item_list) > 3: + guid = item_list[3] + lfn_dict['guid'] = guid + return lfn_dict @DIRACScript() def main(self): - global overwrite - self.registerSwitch("f", "force", "Force overwrite of existing file", setOverwrite) - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() + self.registerSwitch("f", "force", "Force overwrite of existing file", self.setOverwrite) + _, args = self.parseCommandLine(ignoreErrors=True) + if len(args) < 1 or len(args) > 4: self.showHelp(exitCode=1) @@ -90,13 +90,13 @@ def main(self): line = line.rstrip() items = line.split() items[0] = items[0].replace('LFN:', '').replace('lfn:', '') - lfns.append(getDict(items)) + lfns.append(self.getDict(items)) inputFile.close() else: gLogger.error("Error: LFN list '%s' missing." % inputFileName) exitCode = 4 else: - lfns.append(getDict(args)) + lfns.append(self.getDict(args)) dm = DataManager() for lfn in lfns: @@ -110,7 +110,7 @@ def main(self): continue gLogger.notice("\nUploading %s" % lfn['lfn']) - res = dm.putAndRegister(lfn['lfn'], lfn['localfile'], lfn['SE'], lfn['guid'], overwrite=overwrite) + res = dm.putAndRegister(lfn['lfn'], lfn['localfile'], lfn['SE'], lfn['guid'], overwrite=self.overwrite) if not res['OK']: exitCode = 3 gLogger.error('Error: failed to upload %s to %s: %s' % (lfn['lfn'], lfn['SE'], res)) diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py index 5f08abc49c9..36a6cfb5a8c 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_catalog_metadata.py @@ -3,9 +3,6 @@ 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 @@ -17,27 +14,22 @@ __RCSID__ = "$Id$" -from DIRAC import exit as DIRACExit +import os +from DIRAC import exit as DIRACExit from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): - self.parseCommandLine() - from DIRAC.Resources.Catalog.FileCatalog import FileCatalog - import os - args = self.getPositionalArgs() - - if not len(args) >= 1: - self.showHelp(exitCode=1) - else: - inputFileName = args[0] - catalogs = [] - if len(args) == 2: - catalogs = [args[1]] + self.registerArgument(("LocalFile: Path to local file containing LFNs", + "LFN: Logical File Names")) + self.registerArgument(["Catalog: file catalog plug-ins"], mandatory=False) + + self.parseCommandLine() + inputFileName, catalogs = getPositionalArgs(group=True) if os.path.exists(inputFileName): inputFile = open(inputFileName, 'r') 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 79387f7b817..b357672a599 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_change_replica_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_change_replica_status.py @@ -11,25 +11,25 @@ __RCSID__ = "$Id$" -from DIRAC import exit as DIRACExit +import os +from DIRAC import exit as DIRACExit from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): + self.registerArgument(("LocalFile: Path to local file containing LFNs", + "LFN: Logical File Names")) + self.registerArgument(" SE: Storage Element") + self.registerArgument(" status: status") + self.parseCommandLine() from DIRAC.Resources.Catalog.FileCatalog import FileCatalog catalog = FileCatalog() - import os - args = self.getPositionalArgs() - if not len(args) == 3: - self.showHelp(exitCode=1) - else: - inputFileName = args[0] - se = args[1] - newStatus = args[2] + + inputFileName, se, newStatus = self.getPositionalArgs(group=True) if os.path.exists(inputFileName): inputFile = open(inputFileName, 'r') diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py index 207954b2061..2b1ffe47344 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_clean_directory.py @@ -20,24 +20,23 @@ import os from DIRAC import exit as DIRACExit, gLogger - from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): - self.parseCommandLine() + self.registerArgument(("LocalFile: Path to local file containing LFNs", + "LFN: Logical File Name")) + self.registerArgument(["LFN: Logical File Name"], mandatory=False) - args = self.getPositionalArgs() - if len(args) != 1: - self.showHelp(exitCode=1) + self.parseCommandLine() - inputFileName = args[0] + first, lfns = self.getPositionalArgs(group=True) - if os.path.exists(inputFileName): - lfns = [lfn.strip().split()[0] for lfn in sorted(open(inputFileName, 'r').read().splitlines())] + if os.path.exists(first): + lfns = [lfn.strip().split()[0] for lfn in sorted(open(first, 'r').read().splitlines())] else: - lfns = [inputFileName] + lfns = [first] from DIRAC.DataManagementSystem.Client.DataManager import DataManager dm = DataManager() 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 6dd62927cf6..49cc40d5157 100644 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_archive_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_archive_request.py @@ -34,6 +34,9 @@ from __future__ import absolute_import from __future__ import division from __future__ import print_function + +__RCSID__ = '$Id$' + import os import DIRAC @@ -41,7 +44,6 @@ from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations from DIRAC.Core.Utilities import DEncode from DIRAC.Core.Utilities.ReturnValues import returnSingleResult - from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.FrameworkSystem.private.standardLogging.LogLevels import LogLevels from DIRAC.RequestManagementSystem.Client.File import File @@ -49,17 +51,15 @@ from DIRAC.RequestManagementSystem.Client.Operation import Operation sLog = gLogger.getSubLogger('AddArchive') -__RCSID__ = '$Id$' -MAX_SIZE = 2 * 1024 * 1024 * 1024 # 2 GB -MAX_FILES = 2000 -class CreateArchiveRequest(object): +class CreateArchiveRequest(DIRACScript): """Create the request to archive files.""" - def __init__(self, script): + def initParameters(self): """Constructor.""" - self.__script = script + self.MAX_SIZE = 2 * 1024 * 1024 * 1024 # 2 GB + self.MAX_FILES = 2000 self._fcClient = None self._reqClient = None self.switches = {} @@ -72,8 +72,8 @@ def __init__(self, script): ('N', 'Name', 'Name of the Tarball, if not given: Path_Tars/Path_N.tar' ' will be used to store tarballs'), ('L', 'List', 'File containing list of LFNs to archive, requires Name to be given'), - ('', 'MaxFiles', 'Maximum number to put in one tarball: Default %d' % MAX_FILES), - ('', 'MaxSize', 'Maximum number of Bytes to put in one tarball: Default %d' % MAX_SIZE), + ('', 'MaxFiles', 'Maximum number to put in one tarball: Default %d' % self.MAX_FILES), + ('', 'MaxSize', 'Maximum number of Bytes to put in one tarball: Default %d' % self.MAX_SIZE), ('S', 'SourceSE', 'Where to remove the LFNs from'), ('T', 'TargetSE', 'Where to move the Tarball to'), ] @@ -89,8 +89,8 @@ def __init__(self, script): ] self.registerSwitchesAndParseCommandLine() - self.switches['MaxSize'] = int(self.switches.setdefault('MaxSize', MAX_SIZE)) - self.switches['MaxFiles'] = int(self.switches.setdefault('MaxFiles', MAX_FILES)) + self.switches['MaxSize'] = int(self.switches.setdefault('MaxSize', self.MAX_SIZE)) + self.switches['MaxFiles'] = int(self.switches.setdefault('MaxFiles', self.MAX_FILES)) self.getLFNList() self.getLFNMetadata() @@ -146,13 +146,13 @@ def registerSwitchesAndParseCommandLine(self): :param str opName """ for short, longOption, doc in self.options: - self.__script.registerSwitch(short + ':' if short else '', longOption + '=', doc) + self.registerSwitch(short + ':' if short else '', longOption + '=', doc) for short, longOption, doc in self.flags: - self.__script.registerSwitch(short, longOption, doc) + self.registerSwitch(short, longOption, doc) self.switches[longOption] = False - self.__script.parseCommandLine() - if self.__script.getPositionalArgs(): - self.__script.showHelp(exitCode=1) + self.parseCommandLine() + if self.getPositionalArgs(): + self.showHelp(exitCode=1) ops = Operations() if not ops.getValue('DataManagement/ArchiveFiles/Enabled', False): @@ -169,7 +169,7 @@ def registerSwitchesAndParseCommandLine(self): sLog.verbose('Found default value in the CS for %r with value %r' % (longOption, defaultValue)) self.switches[longOption] = defaultValue - for switch in self.__script.getUnprocessedSwitches(): + for switch in self.getUnprocessedSwitches(): for short, longOption, doc in self.options: if switch[0] == short or switch[0].lower() == longOption.lower(): sLog.verbose('Found switch %r with value %r' % (longOption, switch[1])) @@ -513,11 +513,10 @@ def _replicateSourceFiles(self, request, lfns): request.addOperation(registerSource) -@DIRACScript() +@CreateArchiveRequest() def main(self): try: - CAR = CreateArchiveRequest(self) - CAR.run() + self.run() except Exception as e: if LogLevels.getLevelValue(sLog.getLevel()) <= LogLevels.VERBOSE: sLog.exception('Failed to create Archive Request') 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 091ad48b602..7c46c39fe84 100644 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_moving_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_moving_request.py @@ -11,11 +11,12 @@ from __future__ import division from __future__ import print_function +__RCSID__ = '$Id$' + import os import DIRAC from DIRAC import gLogger - from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Utilities.List import breakListIntoChunks from DIRAC.Core.Utilities.ReturnValues import returnSingleResult @@ -25,13 +26,12 @@ from DIRAC.RequestManagementSystem.Client.Operation import Operation sLog = gLogger.getSubLogger('CreateMoving') -__RCSID__ = '$Id$' -class CreateMovingRequest(object): +class CreateMovingRequest(DIRACScript): """Create the request to move files from one SE to another.""" - def __init__(self, script): + def initParameters(self): """Constructor.""" self.requests = [] self._reqClient = None @@ -48,7 +48,7 @@ def __init__(self, script): 'Ensure the LFNs are migrated to tape before removing any replicas'), ('X', 'Execute', 'Put Requests, else dryrun'), ] - self.registerSwitchesAndParseCommandLine(script) + self.registerSwitchesAndParseCommandLine() self.getLFNList() self.getLFNMetadata() @@ -88,7 +88,7 @@ def lfnFolderPath(self): """Return the lfn folder path where to find the files of the request.""" return self.switches.get('Path', None) - def registerSwitchesAndParseCommandLine(self, script): + def registerSwitchesAndParseCommandLine(self): """Register the default plus additional parameters and parse options. :param list options: list of three tuple for options to add to the script @@ -96,15 +96,15 @@ def registerSwitchesAndParseCommandLine(self, script): :param str opName """ for short, longOption, doc in self.options: - script.registerSwitch(short + ':' if short else '', longOption + '=', doc) + self.registerSwitch(short + ':' if short else '', longOption + '=', doc) for short, longOption, doc in self.flags: - script.registerSwitch(short, longOption, doc) + self.registerSwitch(short, longOption, doc) self.switches[longOption] = False - script.parseCommandLine() - if script.getPositionalArgs(): - script.showHelp(exitCode=1) + self.parseCommandLine() + if self.getPositionalArgs(): + self.showHelp(exitCode=1) - for switch in script.getUnprocessedSwitches(): + for switch in self.getUnprocessedSwitches(): for short, longOption, doc in self.options: if switch[0] == short or switch[0].lower() == longOption.lower(): sLog.verbose('Found switch %r with value %r' % (longOption, switch[1])) @@ -283,11 +283,10 @@ def putOrRunRequests(self): return 1 -@DIRACScript() +@CreateMovingRequest() def main(self): try: - CMR = CreateMovingRequest(self) - CMR.run() + self.run() except Exception as e: if LogLevels.getLevelValue(sLog.getLevel()) <= LogLevels.VERBOSE: sLog.exception('Failed to create Moving Request') 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 3165fa8c8ae..0b5822a1411 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_removal_request.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_create_removal_request.py @@ -1,13 +1,6 @@ #!/usr/bin/env python """ Create a DIRAC RemoveReplica|RemoveFile request to be executed by the RMS - -Usage: - dirac-dms-create-removal-request [options] ... SE LFN ... - -Arguments: - SE: StorageElement|All - LFN: LFN or file containing a List of LFNs """ from __future__ import print_function from __future__ import absolute_import @@ -18,18 +11,17 @@ import os from hashlib import md5 import time -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Utilities.List import breakListIntoChunks @DIRACScript() def main(self): + self.registerArgument(" SE: StorageElement|All") + self.registerArgument(["LFN: LFN or file containing a List of LFNs"]) self.parseCommandLine(ignoreErrors=False) args = self.getPositionalArgs() - if len(args) < 2: - self.showHelp() targetSE = args.pop(0) diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py index a3b2e13e042..a518ac2a7a3 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_data_size.py @@ -2,9 +2,6 @@ """ 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 ------------------------------ @@ -22,7 +19,6 @@ import os import DIRAC from DIRAC import gLogger - from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -30,9 +26,12 @@ def main(self): unit = 'GB' self.registerSwitch("u:", "Unit=", " Unit to use [default %s] (MB,GB,TB,PB)" % unit) + self.registerArgument(("LocalFile: Path to local file containing LFNs", + "LFN: Logical File Name")) + self.registerArgument(["LFN: Logical File Name"], mandatory=False) + unprSwitches, args = self.parseCommandLine(ignoreErrors=False) - self.parseCommandLine(ignoreErrors=False) - for switch in self.getUnprocessedSwitches(): + for switch in unprSwitches: if switch[0].lower() == "u" or switch[0].lower() == "unit": unit = switch[1] scaleDict = {'MB': 1000 * 1000.0, @@ -44,7 +43,6 @@ def main(self): DIRAC.exit(2) scaleFactor = scaleDict[unit] - args = self.getPositionalArgs() lfns = [] for inputFileName in args: if os.path.exists(inputFileName): diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py index 15142c575b0..4e3a0e1bb94 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_directory_sync.py @@ -11,18 +11,12 @@ 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 +Example: 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 @@ -30,7 +24,6 @@ import os import DIRAC - from DIRAC.Core.Utilities.DIRACScript import DIRACScript __RCSID__ = "$Id$" @@ -40,10 +33,15 @@ def main(self): self.registerSwitch("D", "sync", "Make target directory identical to source") self.registerSwitch("j:", "parallel=", "Multithreaded download and upload") + self.registerArgument(("LFN: Logical File Name (Path to directory)", + "Path: Local path to the file (Path to directory)")) + self.registerArgument(("Path: Local path to the file (Path to directory)", + "LFN: Logical File Name (Path to directory)")) + self.registerArgument(" SE: DIRAC Storage Element", mandatory=False) self.parseCommandLine(ignoreErrors=False) args = self.getPositionalArgs() - if len(args) < 1 or len(args) > 3: + if len(args) > 3: self.showHelp() sync = False diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py index db1abfa456a..84f66f06aa8 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_filecatalog_cli.py @@ -2,9 +2,6 @@ """ Launch the File Catalog shell -Usage: - dirac-dms-filecatalog-cli [option] - Example: $ dirac-dms-filecatalog-cli Starting DIRAC FileCatalog client @@ -29,7 +26,6 @@ import sys - from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py index 21fac742ba4..c8796f430ed 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_find_lfns.py @@ -2,14 +2,7 @@ """ 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" """ @@ -21,17 +14,19 @@ @DIRACScript() def main(self): - self.registerSwitch('', 'Path=', ' Path to search for') - self.registerSwitch('', 'SE=', ' (comma-separated list of) SEs/SE-groups to be searched') - self.parseCommandLine(ignoreErrors=True) - args = self.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.DataManagementSystem.Utilities.DMSHelpers import resolveSEGroup + self.registerSwitch('', 'Path=', ' Path to search for') + self.registerSwitch('', 'SE=', ' (comma-separated list of) SEs/SE-groups to be searched') + self.registerArgument(['metaspec: metadata index specification (of the form: \ + "meta=value" or "meta - Example: $ dirac-dms-remove-catalog-files /formation/user/v/vhamar/1/1134/StdOut Successfully removed 1 catalog files. @@ -18,7 +15,6 @@ __RCSID__ = "$Id$" - from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC import exit as dexit from DIRAC import gLogger @@ -26,6 +22,8 @@ @DIRACScript() def main(self): + self.registerArgument(("LocalFile: Path to local file containing LFNs", + "LFN: Logical File Names")) self.parseCommandLine() from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations @@ -49,10 +47,7 @@ def main(self): args = self.getPositionalArgs() - if len(args) < 1: - self.showHelp(exitCode=1) - else: - inputFileName = args[0] + inputFileName = args[0] if os.path.exists(inputFileName): inputFile = open(inputFileName, 'r') 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 87a9b44c845..476e7759fc0 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_replicas.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_catalog_replicas.py @@ -3,9 +3,6 @@ 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 @@ -23,6 +20,9 @@ @DIRACScript() def main(self): + self.registerArgument(("LocalFile: Path to local file containing LFNs", + "LFN: Logical File Names")) + self.registerArgument(" SE: Storage element") self.parseCommandLine() from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations @@ -42,12 +42,7 @@ def main(self): from DIRAC.DataManagementSystem.Client.DataManager import DataManager dm = DataManager() - args = self.getPositionalArgs() - if len(args) < 2: - self.showHelp(exitCode=1) - else: - inputFileName = args[0] - storageElementName = args[1] + inputFileName, storageElementName = self.getPositionalArgs(group=True) if os.path.exists(inputFileName): inputFile = open(inputFileName, 'r') diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py index 841a2735312..cae1dd2d111 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_files.py @@ -2,9 +2,6 @@ """ 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 """ @@ -20,22 +17,24 @@ @DIRACScript() def main(self): + self.registerArgument(("LocalFile: Path to local file containing LFNs", + "LFN: Logical File Names")) + self.registerArgument(["LFN: Logical File Names"], mandatory=False) self.parseCommandLine() import os import DIRAC from DIRAC import gLogger - args = self.getPositionalArgs() - lfns = [] - for inputFileName in args: - if os.path.exists(inputFileName): - inputFile = open(inputFileName, 'r') - string = inputFile.read() - inputFile.close() - lfns.extend([lfn.strip() for lfn in string.splitlines()]) - else: - lfns.append(inputFileName) + first, lfns = self.getPositionalArgs(group=True) + + if os.path.exists(first): + inputFile = open(first, 'r') + string = inputFile.read() + inputFile.close() + lfns.extend([lfn.strip() for lfn in string.splitlines()]) + else: + lfns.append(first) from DIRAC.Core.Utilities.List import breakListIntoChunks from DIRAC.DataManagementSystem.Client.DataManager import DataManager diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py index 76f202f0b47..5be9ba5228f 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_remove_replicas.py @@ -3,9 +3,6 @@ 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 @@ -23,29 +20,27 @@ @DIRACScript() def main(self): + self.registerArgument(("LocalFile: Path to local file containing LFNs", + "LFN: Logical File Names")) + self.registerArgument(["SE: Storage element"]) + self.parseCommandLine() from DIRAC.Core.Utilities.List import breakListIntoChunks from DIRAC.DataManagementSystem.Client.DataManager import DataManager dm = DataManager() import os - inputFileName = "" - storageElementNames = [] - args = self.getPositionalArgs() - if len(args) < 2: - self.showHelp(exitCode=1) - else: - inputFileName = args[0] - storageElementNames = args[1:] + first, storageElementNames = self.getPositionalArgs(group=True) - if os.path.exists(inputFileName): - inputFile = open(inputFileName, 'r') + if os.path.exists(first): + inputFile = open(first, 'r') string = inputFile.read() lfns = [lfn.strip() for lfn in string.splitlines()] inputFile.close() else: - lfns = [inputFileName] + lfns = [first] + for lfnList in breakListIntoChunks(sorted(lfns, reverse=True), 500): for storageElementName in storageElementNames: res = dm.removeReplica(storageElementName, lfnList) diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py index d287c137385..1df517be2b1 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_replica_metadata.py @@ -1,9 +1,6 @@ #!/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 @@ -14,23 +11,21 @@ import os from DIRAC import exit as DIRACExit - from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): + self.registerArgument(("LocalFile: Path to local file containing LFNs", + "LFN: Logical File Names")) + self.registerArgument(" SE: Storage element") + self.parseCommandLine() from DIRAC import gLogger from DIRAC.DataManagementSystem.Client.DataManager import DataManager - args = self.getPositionalArgs() - if not len(args) == 2: - self.showHelp(exitCode=1) - else: - inputFileName = args[0] - storageElement = args[1] + inputFileName, storageElement = self.getPositionalArgs(group=True) if os.path.exists(inputFileName): inputFile = open(inputFileName, 'r') 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 a87f8a48e19..008571cc213 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,24 +1,18 @@ #!/bin/env python """ Create and put 'ReplicateAndRegister' request. - -Usage: - dirac-dms-replicate-and-register-request [options] requestName LFNs targetSE1 [targetSE2 ...] - -Arguments: - requestName: a request name - LFNs: single LFN or file with LFNs - targetSE: target SE """ from __future__ import absolute_import from __future__ import division from __future__ import print_function + __RCSID__ = "$Id$" + import os -from DIRAC.Core.Utilities.DIRACScript import DIRACScript -from DIRAC import gLogger import DIRAC +from DIRAC import gLogger +from DIRAC.Core.Utilities.DIRACScript import DIRACScript def getLFNList(arg): @@ -35,7 +29,11 @@ def getLFNList(arg): def main(self): catalog = None self.registerSwitch("C:", "Catalog=", "Catalog to use") + self.registerArgument(" requestName: a request name") + self.registerArgument(" LFNs: single LFN or file with LFNs") + self.registerArgument(["targetSE: target SE"]) self.parseCommandLine() + for switch in self.getUnprocessedSwitches(): if switch[0] == "C" or switch[0].lower() == "catalog": catalog = switch[1] diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py index 1d0103c8c1c..a6cb8bdf759 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_resolve_guid.py @@ -11,20 +11,18 @@ __RCSID__ = "$Id$" - from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): + self.registerArgument("GUIDs: GUIDs separated by a comma") self.parseCommandLine() import DIRAC from DIRAC import gLogger args = self.getPositionalArgs() - if len(args) != 1: - self.showHelp() guids = args[0] try: 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 ed24437497d..c9c21c10725 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_set_replica_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_set_replica_status.py @@ -1,15 +1,6 @@ #!/usr/bin/env python """ Set the status of the replicas of given files at the provided SE - -Usage: - dirac-dms-set-replica-status [options] ... SE Status - -Arguments: - LFN: LFN - File: File name containing a list of affected LFNs - SE: Name of Storage Element - Status: New Status for the replica """ from __future__ import absolute_import from __future__ import division @@ -17,26 +8,24 @@ __RCSID__ = "$Id$" +import os from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): + self.registerArgument(("LFN: LFN", + "File: File name containing a list of affected LFNs")) + self.registerArgument(" SE: Name of Storage Element") + self.registerArgument(" Status: New Status for the replica") self.parseCommandLine(ignoreErrors=False) import DIRAC from DIRAC import gLogger from DIRAC.Resources.Catalog.FileCatalog import FileCatalog - import os - - args = self.getPositionalArgs() - if not len(args) == 3: - self.showHelp() - inputFileName = args[0] - storageElement = args[1] - status = args[2] + inputFileName, storageElement, status = self.getPositionalArgs(group=True) if os.path.exists(inputFileName): inputFile = open(inputFileName, 'r') 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 39369be36c8..6adb590d500 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_show_se_status.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_show_se_status.py @@ -20,49 +20,38 @@ from __future__ import division from DIRAC import S_OK, exit as DIRACexit - from DIRAC.Core.Utilities.DIRACScript import DIRACScript __RCSID__ = "$Id$" -vo = None - - -def setVO(arg): - global vo - vo = arg - return S_OK() - -allVOsFlag = False +class ShowSEStatus(DIRACScript): + def initParameters(self): + """ init """ + self.vo = None + self.allVOsFlag = False + self.noVOFlag = False -def setAllVO(arg): - global allVOsFlag - allVOsFlag = True - return S_OK() + def setVO(self, arg): + self.vo = arg + return S_OK() + def setAllVO(self, arg): + self.allVOsFlag = True + return S_OK() -noVOFlag = False + def setNoVO(self, arg): + self.noVOFlag = True + self.allVOsFlag = False + return S_OK() -def setNoVO(arg): - global noVOFlag, allVOsFlag - noVOFlag = True - allVOsFlag = False - return S_OK() - - -@DIRACScript() +@ShowSEStatus() def main(self): - global vo - global noVOFlag - global allVOsFlag - - self.registerSwitch("V:", "vo=", "Virtual Organization", setVO) - self.registerSwitch("a", "all", "All Virtual Organizations flag", setAllVO) - self.registerSwitch("n", "noVO", "No Virtual Organizations assigned flag", setNoVO) - + self.registerSwitch("V:", "vo=", "Virtual Organization", self.setVO) + self.registerSwitch("a", "all", "All Virtual Organizations flag", self.setAllVO) + self.registerSwitch("n", "noVO", "No Virtual Organizations assigned flag", self.setNoVO) self.parseCommandLine() from DIRAC import gConfig, gLogger @@ -92,21 +81,21 @@ def main(self): fields = ['SE', 'ReadAccess', 'WriteAccess', 'RemoveAccess', 'CheckAccess'] records = [] - if vo is None and not allVOsFlag: + if self.vo is None and not self.allVOsFlag: result = getVOfromProxyGroup() if not result['OK']: gLogger.error('Failed to determine the user VO') DIRACexit(1) - vo = result['Value'] + self.vo = result['Value'] for se, statusDict in res['Value'].items(): # Check if the SE is allowed for the user VO - if not allVOsFlag: + if not self.allVOsFlag: voList = gConfig.getValue('/Resources/StorageElements/%s/VO' % se, []) - if noVOFlag and voList: + if self.noVOFlag and voList: continue - if voList and vo not in voList: + if voList and self.vo not in voList: continue record = [se] diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py index 9ea67631012..9ea10b8d704 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_lfns.py @@ -21,7 +21,6 @@ __RCSID__ = "$Id$" - from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py index 7283975af9f..64d9397f351 100755 --- a/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py +++ b/src/DIRAC/DataManagementSystem/scripts/dirac_dms_user_quota.py @@ -15,7 +15,6 @@ __RCSID__ = "$Id$" - from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/FrameworkSystem/Client/ProxyGeneration.py b/src/DIRAC/FrameworkSystem/Client/ProxyGeneration.py index 2a25c245c85..957c6132acd 100644 --- a/src/DIRAC/FrameworkSystem/Client/ProxyGeneration.py +++ b/src/DIRAC/FrameworkSystem/Client/ProxyGeneration.py @@ -6,33 +6,37 @@ from __future__ import absolute_import from __future__ import print_function +__RCSID__ = "$Id$" + import sys from prompt_toolkit import prompt -from DIRAC import S_OK, S_ERROR, gLogger +from DIRAC import S_OK, S_ERROR, gLogger +from DIRAC.Core.Security import Locations +from DIRAC.Core.Security.X509Chain import X509Chain # pylint: disable=import-error +from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Utilities.NTP import getClockDeviation - -__RCSID__ = "$Id$" +from DIRAC.ConfigurationSystem.Client.Helpers import Registry -class CLIParams(object): +class ProxyGeneration(DIRACScript): - def __init__(self): - self.proxyLifeTime = 86400 - self.diracGroup = False - self.proxyStrength = 1024 - self.limitedProxy = False + def initParameters(self): + self.rfc = True + self.keyLoc = False self.strict = False self.summary = False self.certLoc = False - self.keyLoc = False self.proxyLoc = False - self.checkWithCS = True - self.stdinPasswd = False - self.userPasswd = "" self.checkClock = True + self.diracGroup = False + self.userPasswd = "" + self.stdinPasswd = False + self.checkWithCS = True + self.limitedProxy = False + self.proxyLifeTime = 86400 + self.proxyStrength = 1024 self.embedDefaultGroup = True - self.rfc = True self.proxyGenerationSwitches = [ ("v:", "valid=", "Valid HH:MM for the proxy. By default is 24 hours", self.setProxyLifeTime), @@ -244,147 +248,139 @@ def disableClockCheck(self, _arg): self.checkClock = False return S_OK() + def generateProxy(self): + """ Generate proxy -from DIRAC.Core.Security.X509Chain import X509Chain # pylint: disable=import-error -from DIRAC.ConfigurationSystem.Client.Helpers import Registry -from DIRAC.Core.Security import Locations - - -def generateProxy(params, script): - """ Generate proxy - - :param params: parameters - - :return: S_OK()/S_ERROR() - """ - if params.checkClock: - result = getClockDeviation() - if result['OK']: - deviation = result['Value'] - if deviation > 600: - gLogger.error("Your host clock seems to be off by more than TEN MINUTES! Thats really bad.") - gLogger.error("We're cowardly refusing to generate a proxy. Please fix your system time") - sys.exit(1) - elif deviation > 180: - gLogger.error("Your host clock seems to be off by more than THREE minutes! Thats bad.") - gLogger.notice("We'll generate the proxy but please fix your system time") - elif deviation > 60: - gLogger.error("Your host clock seems to be off by more than a minute! Thats not good.") - gLogger.notice("We'll generate the proxy but please fix your system time") - - certLoc = params.certLoc - keyLoc = params.keyLoc - if not certLoc or not keyLoc: - cakLoc = Locations.getCertificateAndKeyLocation() - if not cakLoc: - return S_ERROR("Can't find user certificate and key") - if not certLoc: - certLoc = cakLoc[0] - if not keyLoc: - keyLoc = cakLoc[1] - params.certLoc = certLoc - params.keyLoc = keyLoc - - # Load password - testChain = X509Chain() - retVal = testChain.loadChainFromFile(params.certLoc) - if not retVal['OK']: - return S_ERROR("Cannot load certificate %s: %s" % (params.certLoc, retVal['Message'])) - timeLeft = int(testChain.getRemainingSecs()['Value'] / 86400) - if timeLeft < 30: - gLogger.notice("\nYour certificate will expire in %d days. Please renew it!\n" % timeLeft) - - # First try reading the key from the file - retVal = testChain.loadKeyFromFile(params.keyLoc, password=params.userPasswd) # XXX why so commented? - if not retVal['OK']: - if params.stdinPasswd: - userPasswd = sys.stdin.readline().strip("\n") - else: - try: - userPasswd = prompt(u"Enter Certificate password: ", is_password=True) - except KeyboardInterrupt: - return S_ERROR("Caught KeyboardInterrupt, exiting...") - params.userPasswd = userPasswd - - # Find location - proxyLoc = params.proxyLoc - if not proxyLoc: - proxyLoc = Locations.getDefaultProxyLocation() - - chain = X509Chain() - # Load user cert and key - retVal = chain.loadChainFromFile(certLoc) - if not retVal['OK']: - gLogger.warn(retVal['Message']) - return S_ERROR("Can't load %s" % certLoc) - retVal = chain.loadKeyFromFile(keyLoc, password=params.userPasswd) - if not retVal['OK']: - gLogger.warn(retVal['Message']) - if 'bad decrypt' in retVal['Message'] or 'bad pass phrase' in retVal['Message']: - return S_ERROR("Bad passphrase") - return S_ERROR("Can't load %s" % keyLoc) - - if params.checkWithCS: - retVal = chain.generateProxyToFile(proxyLoc, - params.proxyLifeTime, - strength=params.proxyStrength, - limited=params.limitedProxy, - rfc=params.rfc) + :return: S_OK()/S_ERROR() + """ + if self.checkClock: + result = getClockDeviation() + if result['OK']: + deviation = result['Value'] + if deviation > 600: + gLogger.error("Your host clock seems to be off by more than TEN MINUTES! Thats really bad.") + gLogger.error("We're cowardly refusing to generate a proxy. Please fix your system time") + sys.exit(1) + elif deviation > 180: + gLogger.error("Your host clock seems to be off by more than THREE minutes! Thats bad.") + gLogger.notice("We'll generate the proxy but please fix your system time") + elif deviation > 60: + gLogger.error("Your host clock seems to be off by more than a minute! Thats not good.") + gLogger.notice("We'll generate the proxy but please fix your system time") + + certLoc = self.certLoc + keyLoc = self.keyLoc + if not certLoc or not keyLoc: + cakLoc = Locations.getCertificateAndKeyLocation() + if not cakLoc: + return S_ERROR("Can't find user certificate and key") + if not certLoc: + certLoc = cakLoc[0] + if not keyLoc: + keyLoc = cakLoc[1] + self.certLoc = certLoc + self.keyLoc = keyLoc + + # Load password + testChain = X509Chain() + retVal = testChain.loadChainFromFile(self.certLoc) + if not retVal['OK']: + return S_ERROR("Cannot load certificate %s: %s" % (self.certLoc, retVal['Message'])) + timeLeft = int(testChain.getRemainingSecs()['Value'] / 86400) + if timeLeft < 30: + gLogger.notice("\nYour certificate will expire in %d days. Please renew it!\n" % timeLeft) - gLogger.info("Contacting CS...") - retVal = script.enableCS() + # First try reading the key from the file + retVal = testChain.loadKeyFromFile(self.keyLoc, password=self.userPasswd) # XXX why so commented? if not retVal['OK']: - gLogger.warn(retVal['Message']) - if 'Unauthorized query' in retVal['Message']: - # add hint for users - return S_ERROR("Can't contact DIRAC CS: %s (User possibly not registered with dirac server) " - % retVal['Message']) - return S_ERROR("Can't contact DIRAC CS: %s" % retVal['Message']) - userDN = chain.getCertInChain(-1)['Value'].getSubjectDN()['Value'] - - if not params.diracGroup: - result = Registry.findDefaultGroupForDN(userDN) - if not result['OK']: - gLogger.warn("Could not get a default group for DN %s: %s" % (userDN, result['Message'])) + if self.stdinPasswd: + userPasswd = sys.stdin.readline().strip("\n") else: - params.diracGroup = result['Value'] - gLogger.info("Default discovered group is %s" % params.diracGroup) - gLogger.info("Checking DN %s" % userDN) - retVal = Registry.getUsernameForDN(userDN) + try: + userPasswd = prompt(u"Enter Certificate password: ", is_password=True) + except KeyboardInterrupt: + return S_ERROR("Caught KeyboardInterrupt, exiting...") + self.userPasswd = userPasswd + + # Find location + proxyLoc = self.proxyLoc + if not proxyLoc: + proxyLoc = Locations.getDefaultProxyLocation() + + chain = X509Chain() + # Load user cert and key + retVal = chain.loadChainFromFile(certLoc) + if not retVal['OK']: + gLogger.warn(retVal['Message']) + return S_ERROR("Can't load %s" % certLoc) + retVal = chain.loadKeyFromFile(keyLoc, password=self.userPasswd) if not retVal['OK']: gLogger.warn(retVal['Message']) - return S_ERROR("DN %s is not registered" % userDN) - username = retVal['Value'] - gLogger.info("Username is %s" % username) - retVal = Registry.getGroupsForUser(username) + if 'bad decrypt' in retVal['Message'] or 'bad pass phrase' in retVal['Message']: + return S_ERROR("Bad passphrase") + return S_ERROR("Can't load %s" % keyLoc) + + if self.checkWithCS: + retVal = chain.generateProxyToFile(proxyLoc, + self.proxyLifeTime, + strength=self.proxyStrength, + limited=self.limitedProxy, + rfc=self.rfc) + + gLogger.info("Contacting CS...") + retVal = self.enableCS() + if not retVal['OK']: + gLogger.warn(retVal['Message']) + if 'Unauthorized query' in retVal['Message']: + # add hint for users + return S_ERROR("Can't contact DIRAC CS: %s (User possibly not registered with dirac server) " + % retVal['Message']) + return S_ERROR("Can't contact DIRAC CS: %s" % retVal['Message']) + userDN = chain.getCertInChain(-1)['Value'].getSubjectDN()['Value'] + + if not self.diracGroup: + result = Registry.findDefaultGroupForDN(userDN) + if not result['OK']: + gLogger.warn("Could not get a default group for DN %s: %s" % (userDN, result['Message'])) + else: + self.diracGroup = result['Value'] + gLogger.info("Default discovered group is %s" % self.diracGroup) + gLogger.info("Checking DN %s" % userDN) + retVal = Registry.getUsernameForDN(userDN) + if not retVal['OK']: + gLogger.warn(retVal['Message']) + return S_ERROR("DN %s is not registered" % userDN) + username = retVal['Value'] + gLogger.info("Username is %s" % username) + retVal = Registry.getGroupsForUser(username) + if not retVal['OK']: + gLogger.warn(retVal['Message']) + return S_ERROR("User %s has no groups defined" % username) + groups = retVal['Value'] + if self.diracGroup not in groups: + return S_ERROR("Requested group %s is not valid for DN %s" % (self.diracGroup, userDN)) + gLogger.info("Creating proxy for %s@%s (%s)" % (username, self.diracGroup, userDN)) + if self.summary: + h = int(self.proxyLifeTime / 3600) + m = int(self.proxyLifeTime / 60) - h * 60 + gLogger.notice("Proxy lifetime will be %02d:%02d" % (h, m)) + gLogger.notice("User cert is %s" % certLoc) + gLogger.notice("User key is %s" % keyLoc) + gLogger.notice("Proxy will be written to %s" % proxyLoc) + if self.diracGroup: + gLogger.notice("DIRAC Group will be set to %s" % self.diracGroup) + else: + gLogger.notice("No DIRAC Group will be set") + gLogger.notice("Proxy strength will be %s" % self.proxyStrength) + if self.limitedProxy: + gLogger.notice("Proxy will be limited") + retVal = chain.generateProxyToFile(proxyLoc, + self.proxyLifeTime, + self.diracGroup, + strength=self.proxyStrength, + limited=self.limitedProxy, + rfc=self.rfc) if not retVal['OK']: gLogger.warn(retVal['Message']) - return S_ERROR("User %s has no groups defined" % username) - groups = retVal['Value'] - if params.diracGroup not in groups: - return S_ERROR("Requested group %s is not valid for DN %s" % (params.diracGroup, userDN)) - gLogger.info("Creating proxy for %s@%s (%s)" % (username, params.diracGroup, userDN)) - if params.summary: - h = int(params.proxyLifeTime / 3600) - m = int(params.proxyLifeTime / 60) - h * 60 - gLogger.notice("Proxy lifetime will be %02d:%02d" % (h, m)) - gLogger.notice("User cert is %s" % certLoc) - gLogger.notice("User key is %s" % keyLoc) - gLogger.notice("Proxy will be written to %s" % proxyLoc) - if params.diracGroup: - gLogger.notice("DIRAC Group will be set to %s" % params.diracGroup) - else: - gLogger.notice("No DIRAC Group will be set") - gLogger.notice("Proxy strength will be %s" % params.proxyStrength) - if params.limitedProxy: - gLogger.notice("Proxy will be limited") - retVal = chain.generateProxyToFile(proxyLoc, - params.proxyLifeTime, - params.diracGroup, - strength=params.proxyStrength, - limited=params.limitedProxy, - rfc=params.rfc) - if not retVal['OK']: - gLogger.warn(retVal['Message']) - return S_ERROR("Couldn't generate proxy: %s" % retVal['Message']) - return S_OK(proxyLoc) + return S_ERROR("Couldn't generate proxy: %s" % retVal['Message']) + return S_OK(proxyLoc) diff --git a/src/DIRAC/FrameworkSystem/Client/ProxyUpload.py b/src/DIRAC/FrameworkSystem/Client/ProxyUpload.py index 2aeee8c777b..21e6a3fd61f 100644 --- a/src/DIRAC/FrameworkSystem/Client/ProxyUpload.py +++ b/src/DIRAC/FrameworkSystem/Client/ProxyUpload.py @@ -1,32 +1,35 @@ ######################################################################## -# File : dirac-proxy-init.py +# File : ProxyUpload.py # Author : Adrian Casajus ######################################################################## from __future__ import print_function from __future__ import absolute_import from __future__ import division -import sys -from prompt_toolkit import prompt -import DIRAC - -from DIRAC import gLogger - __RCSID__ = "$Id$" +import sys +from prompt_toolkit import prompt -class CLIParams(object): +import DIRAC +from DIRAC import gLogger, S_ERROR +from DIRAC.Core.Utilities.DIRACScript import DIRACScript +from DIRAC.Core.Security import Locations +from DIRAC.Core.Security.X509Chain import X509Chain # pylint: disable=import-error +from DIRAC.FrameworkSystem.Client.ProxyManagerClient import gProxyManager - def __init__(self): - self.proxyLifeTime = 2592000 - self.certLoc = False +class ProxyUpload(DIRACScript): + + def initParameters(self): + self.rfc = False self.keyLoc = False + self.certLoc = False self.proxyLoc = False self.onTheFly = False - self.stdinPasswd = False - self.rfcIfPossible = False self.userPasswd = "" + self.stdinPasswd = False + self.proxyLifeTime = 2592000 self.proxyUploadSwitches = [ ("v:", "valid=", "Valid HH:MM for the proxy. By default is one month", self.setProxyLifeTime), ("C:", "Cert=", "File to use as user certificate", self.setCertLocation), @@ -95,69 +98,62 @@ def showVersion(self, arg): sys.exit(0) return DIRAC.S_OK() - -from DIRAC import S_ERROR -from DIRAC.Core.Security import Locations -from DIRAC.Core.Security.X509Chain import X509Chain # pylint: disable=import-error -from DIRAC.FrameworkSystem.Client.ProxyManagerClient import gProxyManager - - -def uploadProxy(params): - DIRAC.gLogger.info("Loading user proxy") - proxyLoc = params.proxyLoc - if not proxyLoc: - proxyLoc = Locations.getDefaultProxyLocation() - if not proxyLoc: - return S_ERROR("Can't find any proxy") - - if params.onTheFly: - DIRAC.gLogger.info("Uploading proxy on-the-fly") - certLoc = params.certLoc - keyLoc = params.keyLoc - if not certLoc or not keyLoc: - cakLoc = Locations.getCertificateAndKeyLocation() - if not cakLoc: - return S_ERROR("Can't find user certificate and key") - if not certLoc: - certLoc = cakLoc[0] - if not keyLoc: - keyLoc = cakLoc[1] - - DIRAC.gLogger.info("Cert file %s" % certLoc) - DIRAC.gLogger.info("Key file %s" % keyLoc) - - testChain = X509Chain() - retVal = testChain.loadKeyFromFile(keyLoc, password=params.userPasswd) - if not retVal['OK']: - if params.stdinPasswd: - userPasswd = sys.stdin.readline().strip("\n") - else: - try: - userPasswd = prompt(u"Enter Certificate password: ", is_password=True) - except KeyboardInterrupt: - return S_ERROR("Caught KeyboardInterrupt, exiting...") - params.userPasswd = userPasswd - - DIRAC.gLogger.info("Loading cert and key") - chain = X509Chain() - # Load user cert and key - retVal = chain.loadChainFromFile(certLoc) - if not retVal['OK']: - return S_ERROR("Can't load %s" % certLoc) - retVal = chain.loadKeyFromFile(keyLoc, password=params.userPasswd) - if not retVal['OK']: - return S_ERROR("Can't load %s" % keyLoc) - DIRAC.gLogger.info("User credentials loaded") - restrictLifeTime = params.proxyLifeTime - - else: - proxyChain = X509Chain() - retVal = proxyChain.loadProxyFromFile(proxyLoc) - if not retVal['OK']: - return S_ERROR("Can't load proxy file %s: %s" % (params.proxyLoc, retVal['Message'])) - - chain = proxyChain - restrictLifeTime = 0 - - DIRAC.gLogger.info(" Uploading...") - return gProxyManager.uploadProxy(proxy=chain, restrictLifeTime=restrictLifeTime, rfcIfPossible=params.rfcIfPossible) + def uploadProxy(self): + DIRAC.gLogger.info("Loading user proxy") + proxyLoc = self.proxyLoc + if not proxyLoc: + proxyLoc = Locations.getDefaultProxyLocation() + if not proxyLoc: + return S_ERROR("Can't find any proxy") + + if self.onTheFly: + DIRAC.gLogger.info("Uploading proxy on-the-fly") + certLoc = self.certLoc + keyLoc = self.keyLoc + if not certLoc or not keyLoc: + cakLoc = Locations.getCertificateAndKeyLocation() + if not cakLoc: + return S_ERROR("Can't find user certificate and key") + if not certLoc: + certLoc = cakLoc[0] + if not keyLoc: + keyLoc = cakLoc[1] + + DIRAC.gLogger.info("Cert file %s" % certLoc) + DIRAC.gLogger.info("Key file %s" % keyLoc) + + testChain = X509Chain() + retVal = testChain.loadKeyFromFile(keyLoc, password=self.userPasswd) + if not retVal['OK']: + if self.stdinPasswd: + userPasswd = sys.stdin.readline().strip("\n") + else: + try: + userPasswd = prompt(u"Enter Certificate password: ", is_password=True) + except KeyboardInterrupt: + return S_ERROR("Caught KeyboardInterrupt, exiting...") + self.userPasswd = userPasswd + + DIRAC.gLogger.info("Loading cert and key") + chain = X509Chain() + # Load user cert and key + retVal = chain.loadChainFromFile(certLoc) + if not retVal['OK']: + return S_ERROR("Can't load %s" % certLoc) + retVal = chain.loadKeyFromFile(keyLoc, password=self.userPasswd) + if not retVal['OK']: + return S_ERROR("Can't load %s" % keyLoc) + DIRAC.gLogger.info("User credentials loaded") + restrictLifeTime = self.proxyLifeTime + + else: + proxyChain = X509Chain() + retVal = proxyChain.loadProxyFromFile(proxyLoc) + if not retVal['OK']: + return S_ERROR("Can't load proxy file %s: %s" % (self.proxyLoc, retVal['Message'])) + + chain = proxyChain + restrictLifeTime = 0 + + DIRAC.gLogger.info(" Uploading...") + return gProxyManager.uploadProxy(proxy=chain, restrictLifeTime=restrictLifeTime, rfcIfPossible=self.rfc) diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py index 1ed9f7b58bf..315716704f8 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_CAs.py @@ -17,7 +17,6 @@ from __future__ import print_function import DIRAC - from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.FrameworkSystem.Client.BundleDeliveryClient import BundleDeliveryClient diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py index 6c06a26d40a..60c619e20cb 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_get_proxy.py @@ -6,14 +6,6 @@ """ Retrieve a delegated proxy for the given user and group -Usage: - dirac-admin-get-proxy [options] ... group - -Arguments: - DN: DN of the user - user: DIRAC user name (will fail if there is more than 1 DN registered) - group: DIRAC group name - Example: $ dirac-admin-get-proxy vhamar dirac_user Proxy downloaded to /afs/in2p3.fr/home/h/hamar/proxy.vhamar.dirac_user @@ -28,7 +20,6 @@ import DIRAC from DIRAC import gLogger, S_OK, S_ERROR -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.FrameworkSystem.Client.ProxyManagerClient import gProxyManager from DIRAC.ConfigurationSystem.Client.Helpers import Registry @@ -36,9 +27,9 @@ __RCSID__ = "$Id$" -class Params(object): +class GetProxy(DIRACScript): - def __init__(self): + def initParameters(self): self.limited = False self.proxyPath = False self.proxyLifeTime = 86400 @@ -107,19 +98,16 @@ def setVOMSAttr(self, arg): return S_OK() -@DIRACScript() +@GetProxy() def main(self): - params = Params() - self.registerSwitches(params.switches) + self.registerSwitches(self.switches) + self.registerArgument(("DN: DN of the user", + "user: DIRAC user name (will fail if there is more than 1 DN registered)")) + self.registerArgument(" group: DIRAC group name") self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) != 2: - self.showHelp() + userDN, userGroup = self.getPositionalArgs(group=True) - userGroup = str(args[1]) - userDN = str(args[0]) userName = False if userDN.find("/") != 0: userName = userDN diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py index 97609cb8794..1fb8733c78a 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_proxy_upload.py @@ -17,19 +17,15 @@ import sys +from DIRAC.FrameworkSystem.Client.ProxyUpload import ProxyUpload -from DIRAC.Core.Utilities.DIRACScript import DIRACScript -from DIRAC.FrameworkSystem.Client.ProxyUpload import CLIParams, uploadProxy - -@DIRACScript() +@ProxyUpload() def main(self): - cliParams = CLIParams() - self.registerSwitches(cliParams.proxyUploadSwitches) - + self.registerSwitches(self.proxyUploadSwitches) self.parseCommandLine() - retVal = uploadProxy(cliParams) + retVal = self.uploadProxy() if not retVal['OK']: print(retVal['Message']) sys.exit(1) diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py index a68a63789ad..a882072d2aa 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_sysadmin_cli.py @@ -13,7 +13,6 @@ __RCSID__ = "$Id$" - from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py index 2c439c78955..62d9ea48cc4 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_instance.py @@ -1,12 +1,6 @@ #!/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,7 +11,6 @@ from io import open import DIRAC - from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -35,7 +28,6 @@ def main(): if len(args) < 1 or len(args) > 3: Script.showHelp() - version = args[0] retry = 0 hosts = [] excludeHosts = [] diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py index b96959f9cfc..7cb357c9be0 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_update_pilot.py @@ -1,12 +1,6 @@ #!/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 @@ -21,20 +15,14 @@ @DIRACScript() def main(self): - self.registerSwitch( - "v:", - "vo=", - "Location of pilot version in CS /Operations//Pilot/Version" - " (default value specified in CS under /DIRAC/DefaultSetup)" - ) - + self.registerSwitch("v:", "vo=", + "Location of pilot version in CS /Operations//Pilot/Version" + " (default value specified in CS under /DIRAC/DefaultSetup)") + self.registerArgument("version: pilot version you want to update to") self.parseCommandLine(ignoreErrors=False) - args = self.getPositionalArgs() - if len(args) < 1 or len(args) > 2: - self.showHelp() + version = self.getPositionalArgs(group=True) - version = args[0] vo = None for switch in self.getUnprocessedSwitches(): if switch[0] == "v" or switch[0] == "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 bb8810d4092..3d5147f1311 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_admin_users_with_proxy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_admin_users_with_proxy.py @@ -32,9 +32,9 @@ __RCSID__ = "$Id$" -class Params(object): +class UsersWithProxy(DIRACScript): - def __init__(self): + def initParameters(self): self.limited = False self.proxyPath = False self.proxyLifeTime = 3600 @@ -49,12 +49,10 @@ def setProxyLifeTime(self, arg): return DIRAC.S_OK() -@DIRACScript() +@UsersWithProxy() def main(self): - params = Params() - self.registerSwitch("v:", "valid=", "Required HH:MM for the users", params.setProxyLifeTime) + self.registerSwitch("v:", "valid=", "Required HH:MM for the users", self.setProxyLifeTime) self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() result = gProxyManager.getDBContents() if not result['OK']: print("Can't retrieve list of users: %s" % result['Message']) @@ -68,7 +66,7 @@ def main(self): expirationDate = record[3] dt = expirationDate - now secsLeft = dt.days * 86400 + dt.seconds - if secsLeft > params.proxyLifeTime: + if secsLeft > self.proxyLifeTime: userName, userDN, userGroup, _, persistent = record if userName not in dataDict: dataDict[userName] = [] diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py index 3e9e2555c59..9d34c359e24 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_install_component.py @@ -1,66 +1,54 @@ #!/usr/bin/env python """ Do the initial installation and configuration of a DIRAC component - -Usage: - dirac-install-component [options] ... System Component|System/Component - -Arguments: - System: Name of the DIRAC system (ie: WorkloadManagement) - Service: Name of the DIRAC component (ie: Matcher) """ from __future__ import absolute_import from __future__ import division from __future__ import print_function -from DIRAC import exit as DIRACexit -from DIRAC import gConfig, gLogger, S_OK -from DIRAC.Core.Base import Script +__RCSID__ = "$Id$" + +from DIRAC import gConfig, gLogger, S_OK, exit as DIRACexit from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Utilities.Extensions import extensionsByPriority from DIRAC.FrameworkSystem.Utilities import MonitoringUtilities -__RCSID__ = "$Id$" -overwrite = False -module = '' -specialOptions = {} +class UsersWithProxy(DIRACScript): + def initParameters(self): + self.overwrite = False + self.module = '' + self.specialOptions = {} -def setOverwrite(opVal): - global overwrite - overwrite = True - return S_OK() + def setOverwrite(self, opVal): + self.overwrite = True + return S_OK() + def setModule(self, optVal): + self.specialOptions['Module'] = optVal + self.module = optVal + return S_OK() -def setModule(optVal): - global specialOptions, module - specialOptions['Module'] = optVal - module = optVal - return S_OK() + def setSpecialOption(self, optVal): + option, value = optVal.split('=') + self.specialOptions[option] = value + return S_OK() -def setSpecialOption(optVal): - global specialOptions - option, value = optVal.split('=') - specialOptions[option] = value - return S_OK() - - -@DIRACScript() +@UsersWithProxy() def main(self): - global overwrite - global specialOptions - global module - global specialOptions - from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller gComponentInstaller.exitOnError = True - self.registerSwitch("w", "overwrite", "Overwrite the configuration in the global CS", setOverwrite) - self.registerSwitch("m:", "module=", "Python module name for the component code", setModule) - self.registerSwitch("p:", "parameter=", "Special component option ", setSpecialOption) + self.registerSwitch("w", "overwrite", "Overwrite the configuration in the global CS", self.setOverwrite) + self.registerSwitch("m:", "module=", "Python module name for the component code", self.setModule) + self.registerSwitch("p:", "parameter=", "Special component option ", self.setSpecialOption) + self.registerArgument(("System/Component: Full component name (ie: WorkloadManagement/Matcher)", + "System: Name of the DIRAC system (ie: WorkloadManagement)")) + self.registerArgument(" Component: Name of the DIRAC service (ie: Matcher)", mandatory=False) + self.parseCommandLine() args = self.getPositionalArgs() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py b/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py index e8ad5b3fb95..401ecf3593f 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_install_tornado_service.py @@ -1,13 +1,6 @@ #!/usr/bin/env python """ Do the initial installation and configuration of a DIRAC service based on tornado - -Usage: - dirac-install-tornado-service [options] ... System Component|System/Component - -Arguments: - System: Name of the DIRAC system (ie: WorkloadManagement) - Service: Name of the DIRAC component (ie: Matcher) """ from __future__ import absolute_import @@ -16,56 +9,45 @@ __RCSID__ = "$Id$" -from DIRAC import exit as DIRACexit -from DIRAC import gConfig, gLogger, S_OK -from DIRAC.Core.Base import Script +from DIRAC import gConfig, gLogger, S_OK, exit as DIRACexit from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Utilities.Extensions import extensionsByPriority from DIRAC.FrameworkSystem.Utilities import MonitoringUtilities -__RCSID__ = "$Id$" - - -overwrite = False +class InstallTornadoService(DIRACScript): -def setOverwrite(opVal): - global overwrite - overwrite = True - return S_OK() + def initParameters(self): + self.overwrite = False + self.module = '' + self.specialOptions = {} + def setOverwrite(self, opVal): + self.overwrite = True + return S_OK() -module = '' -specialOptions = {} + def setModule(self, optVal): + self.specialOptions['Module'] = optVal + self.module = optVal + return S_OK() + def setSpecialOption(self, optVal): + option, value = optVal.split('=') + self.specialOptions[option] = value + return S_OK() -def setModule(optVal): - global specialOptions, module - specialOptions['Module'] = optVal - module = optVal - return S_OK() - -def setSpecialOption(optVal): - global specialOptions - option, value = optVal.split('=') - specialOptions[option] = value - return S_OK() - - -@DIRACScript() +@InstallTornadoService() def main(self): - global overwrite - global specialOptions - global module - global specialOptions - from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller gComponentInstaller.exitOnError = True - self.registerSwitch("w", "overwrite", "Overwrite the configuration in the global CS", setOverwrite) - self.registerSwitch("m:", "module=", "Python module name for the component code", setModule) - self.registerSwitch("p:", "parameter=", "Special component option ", setSpecialOption) + self.registerSwitch("w", "overwrite", "Overwrite the configuration in the global CS", self.setOverwrite) + self.registerSwitch("m:", "module=", "Python module name for the component code", self.setModule) + self.registerSwitch("p:", "parameter=", "Special component option ", self.setSpecialOption) + self.registerArgument(("System/Component: Full component name (ie: WorkloadManagement/Matcher)", + "System: Name of the DIRAC system (ie: WorkloadManagement)")) + self.registerArgument(" Component: Name of the DIRAC service (ie: Matcher)", mandatory=False) self.parseCommandLine() args = self.getPositionalArgs() @@ -78,7 +60,7 @@ def main(self): system = args[0] component = args[1] - compOrMod = module if module else component + compOrMod = self.module if self.module else component result = gComponentInstaller.addDefaultOptionsToCS(gConfig, 'service', system, component, extensionsByPriority(), @@ -105,7 +87,7 @@ def main(self): gLogger.error(result['Message']) DIRACexit(1) - result = MonitoringUtilities.monitorInstallation('service', system, component, module) + result = MonitoringUtilities.monitorInstallation('service', system, component, self.module) if not result['OK']: gLogger.error(result['Message']) DIRACexit(1) diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_monitoring_get_components_status.py b/src/DIRAC/FrameworkSystem/scripts/dirac_monitoring_get_components_status.py index 7cbaf1e2b34..258e83845a9 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_monitoring_get_components_status.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_monitoring_get_components_status.py @@ -3,17 +3,16 @@ from __future__ import absolute_import from __future__ import division +__RCSID__ = "$Id$" + import sys -from DIRAC.Core.Base import Script -from DIRAC.Core.Utilities.DIRACScript import DIRACScript -__RCSID__ = "$Id$" +from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() fieldsToShow = ('ComponentName', 'Type', 'Host', 'Port', 'Status', 'Message') diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_myproxy_upload.py b/src/DIRAC/FrameworkSystem/scripts/dirac_myproxy_upload.py index bb1f4e07aae..28a8dd3cb39 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_myproxy_upload.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_myproxy_upload.py @@ -3,15 +3,15 @@ # File : dirac-proxy-init.py # Author : Adrian Casajus ######################################################################## - from __future__ import print_function from __future__ import absolute_import from __future__ import division + __RCSID__ = "$Id$" import sys + import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py b/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py index c95561a8312..eedc7ae649e 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_populate_component_db.py @@ -9,12 +9,12 @@ from __future__ import division from __future__ import print_function +__RCSID__ = "$Id$" from datetime import datetime -from DIRAC import exit as DIRACexit -from DIRAC import S_OK, gLogger, gConfig -from DIRAC.ConfigurationSystem.Client.CSAPI import CSAPI -from DIRAC.Core.Base import Script + +from DIRAC import S_OK, gLogger, gConfig, exit as DIRACexit +from DIRAC.Core.Security.ProxyInfo import getProxyInfo from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.FrameworkSystem.Client.NotificationClient import NotificationClient from DIRAC.FrameworkSystem.Client.SystemAdministratorIntegrator \ @@ -22,30 +22,27 @@ from DIRAC.FrameworkSystem.Client.ComponentMonitoringClient \ import ComponentMonitoringClient from DIRAC.FrameworkSystem.Utilities import MonitoringUtilities +from DIRAC.ConfigurationSystem.Client.CSAPI import CSAPI from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations -from DIRAC.Core.Security.ProxyInfo import getProxyInfo - -__RCSID__ = "$Id$" -global excludedHosts -excludedHosts = [] +class PopulateComponentDB(DIRACScript): -def setExcludedHosts(value): - global excludedHosts + def initParameters(self): + self.excludedHosts = [] - excludedHosts = value.split(',') - return S_OK() + def setExcludedHosts(self, value): + self.excludedHosts = value.split(',') + return S_OK() -@DIRACScript() +@PopulateComponentDB() def main(self): - global excludedHosts self.registerSwitch( "e:", "exclude=", "Comma separated list of hosts to be excluded from the scanning process", - setExcludedHosts) + self.setExcludedHosts) self.parseCommandLine(ignoreErrors=False) componentType = '' @@ -54,7 +51,7 @@ def main(self): mySetup = gConfig.getValue('DIRAC/Setup') # Retrieve information from all the hosts - client = SystemAdministratorIntegrator(exclude=excludedHosts) + client = SystemAdministratorIntegrator(exclude=self.excludedHosts) resultAll = client.getOverallStatus() if not resultAll['OK']: gLogger.error(resultAll['Message']) @@ -72,7 +69,7 @@ def main(self): for host in resultAll['Value']: if not resultAll['Value'][host]['OK']: # If the host cannot be contacted, exclude it and send message - excludedHosts.append(host) + self.excludedHosts.append(host) result = NotificationClient().sendMail( Operations().getValue( @@ -106,7 +103,7 @@ def main(self): DIRACexit(-1) records = [] - finalSet = list(set(resultAll['Value']) - set(excludedHosts)) + finalSet = list(set(resultAll['Value']) - set(self.excludedHosts)) for host in finalSet: hasMySQL = True result = resultAll['Value'][host] diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py index 68a4bbbcb8f..2a2a11ad464 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_destroy.py @@ -15,7 +15,6 @@ import DIRAC from DIRAC import gLogger, S_OK -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Security import Locations, ProxyInfo @@ -24,12 +23,12 @@ from DIRAC.ConfigurationSystem.Client.Helpers import Registry -class Params(object): +class ProxyDestroy(DIRACScript): """ handles input options for dirac-proxy-destroy """ - def __init__(self): + def initParameters(self): """ creates a Params class with default values """ @@ -61,123 +60,122 @@ def needsValidProxy(self): return self.vos or self.delete_all -def getProxyGroups(): - """ - Returns a set of all remote proxy groups stored on the dirac server for the user invoking the command. - """ - proxies = gProxyManager.getUserProxiesInfo() - if not proxies['OK']: - raise RuntimeError('Could not retrieve uploaded proxy info.') - - user_groups = set() - for dn in proxies['Value']: - dn_groups = set(proxies['Value'][dn].keys()) - user_groups.update(dn_groups) - - return user_groups + def getProxyGroups(): + """ + Returns a set of all remote proxy groups stored on the dirac server for the user invoking the command. + """ + proxies = gProxyManager.getUserProxiesInfo() + if not proxies['OK']: + raise RuntimeError('Could not retrieve uploaded proxy info.') + user_groups = set() + for dn in proxies['Value']: + dn_groups = set(proxies['Value'][dn].keys()) + user_groups.update(dn_groups) -def mapVoToGroups(voname): - """ - Returns all groups available for a given VO as a set. - """ + return user_groups - vo_dict = Registry.getGroupsForVO(voname) - if not vo_dict['OK']: - raise RuntimeError('Could not retrieve groups for vo %s.' % voname) - return set(vo_dict['Value']) + def mapVoToGroups(voname): + """ + Returns all groups available for a given VO as a set. + """ + vo_dict = Registry.getGroupsForVO(voname) + if not vo_dict['OK']: + raise RuntimeError('Could not retrieve groups for vo %s.' % voname) -def deleteRemoteProxy(userdn, vogroup): - """ - Deletes proxy for a vogroup for the user envoking this function. - Returns a list of all deleted proxies (if any). - """ - rpcClient = RPCClient("Framework/ProxyManager") - retVal = rpcClient.deleteProxyBundle([(userdn, vogroup)]) + return set(vo_dict['Value']) - if retVal['OK']: - gLogger.notice('Deleted proxy for %s.' % vogroup) - else: - gLogger.error('Failed to delete proxy for %s.' % vogroup) + def deleteRemoteProxy(userdn, vogroup): + """ + Deletes proxy for a vogroup for the user envoking this function. + Returns a list of all deleted proxies (if any). + """ + rpcClient = RPCClient("Framework/ProxyManager") + retVal = rpcClient.deleteProxyBundle([(userdn, vogroup)]) -def deleteLocalProxy(proxyLoc): - """ - Deletes the local proxy. - Returns false if no local proxy found. - """ - try: - os.unlink(proxyLoc) - except IOError: - gLogger.error('IOError: Failed to delete local proxy.') - return - except OSError: - gLogger.error('OSError: Failed to delete local proxy.') - return - gLogger.notice('Local proxy deleted.') + if retVal['OK']: + gLogger.notice('Deleted proxy for %s.' % vogroup) + else: + gLogger.error('Failed to delete proxy for %s.' % vogroup) -def run(self): - """ - main program entry point - """ - options = Params() - self.registerSwitches(options.switches) - - self.parseCommandLine(ignoreErrors=True) - - if options.delete_all and options.vos: - gLogger.error("-a and -v options are mutually exclusive. Please pick one or the other.") - return 1 - - proxyLoc = Locations.getDefaultProxyLocation() - - if not os.path.exists(proxyLoc): - gLogger.error("No local proxy found in %s, exiting." % proxyLoc) - return 1 - - result = ProxyInfo.getProxyInfo(proxyLoc, True) - if not result['OK']: - raise RuntimeError('Failed to get local proxy info.') - - if result['Value']['secondsLeft'] < 60 and options.needsValidProxy(): - raise RuntimeError('Lifetime of local proxy too short, please renew proxy.') - - userDN = result['Value']['identity'] - - if options.delete_all: - # delete remote proxies - remote_groups = getProxyGroups() - if not remote_groups: - gLogger.notice('No remote proxies found.') - for vo_group in remote_groups: - deleteRemoteProxy(userDN, vo_group) - # delete local proxy - deleteLocalProxy(proxyLoc) - elif options.vos: - vo_groups = set() - for voname in options.vos: - vo_groups.update(mapVoToGroups(voname)) - # filter set of all groups to only contain groups for which there is a user proxy - user_groups = getProxyGroups() - vo_groups.intersection_update(user_groups) - if not vo_groups: - gLogger.notice('You have no proxies registered for any of the specified VOs.') - for group in vo_groups: - deleteRemoteProxy(userDN, group) - else: - deleteLocalProxy(proxyLoc) - - return 0 - - -@DIRACScript() + def deleteLocalProxy(proxyLoc): + """ + Deletes the local proxy. + Returns false if no local proxy found. + """ + try: + os.unlink(proxyLoc) + except IOError: + gLogger.error('IOError: Failed to delete local proxy.') + return + except OSError: + gLogger.error('OSError: Failed to delete local proxy.') + return + gLogger.notice('Local proxy deleted.') + + + def run(self): + """ + main program entry point + """ + options = Params() + self.registerSwitches(options.switches) + + self.parseCommandLine(ignoreErrors=True) + + if options.delete_all and options.vos: + gLogger.error("-a and -v options are mutually exclusive. Please pick one or the other.") + return 1 + + proxyLoc = Locations.getDefaultProxyLocation() + + if not os.path.exists(proxyLoc): + gLogger.error("No local proxy found in %s, exiting." % proxyLoc) + return 1 + + result = ProxyInfo.getProxyInfo(proxyLoc, True) + if not result['OK']: + raise RuntimeError('Failed to get local proxy info.') + + if result['Value']['secondsLeft'] < 60 and options.needsValidProxy(): + raise RuntimeError('Lifetime of local proxy too short, please renew proxy.') + + userDN = result['Value']['identity'] + + if options.delete_all: + # delete remote proxies + remote_groups = getProxyGroups() + if not remote_groups: + gLogger.notice('No remote proxies found.') + for vo_group in remote_groups: + deleteRemoteProxy(userDN, vo_group) + # delete local proxy + deleteLocalProxy(proxyLoc) + elif options.vos: + vo_groups = set() + for voname in options.vos: + vo_groups.update(mapVoToGroups(voname)) + # filter set of all groups to only contain groups for which there is a user proxy + user_groups = getProxyGroups() + vo_groups.intersection_update(user_groups) + if not vo_groups: + gLogger.notice('You have no proxies registered for any of the specified VOs.') + for group in vo_groups: + deleteRemoteProxy(userDN, group) + else: + deleteLocalProxy(proxyLoc) + + return 0 + + +@ProxyDestroy() def main(self): try: - retval = run(self) - DIRAC.exit(retval) + DIRAC.exit(self.run()) except RuntimeError as rtError: gLogger.error('Operation failed: %s' % str(rtError)) DIRAC.exit(1) 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 a370e313b2e..493a99f95b1 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_get_uploaded_info.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_get_uploaded_info.py @@ -24,32 +24,35 @@ import sys from DIRAC import gLogger, S_OK -from DIRAC.Core.Base import Script -from DIRAC.Core.Utilities.DIRACScript import DIRACScript -from DIRAC.FrameworkSystem.Client.ProxyManagerClient import ProxyManagerClient from DIRAC.Core.Security import Properties from DIRAC.Core.Security.ProxyInfo import getProxyInfo +from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.ConfigurationSystem.Client.Helpers import Registry +from DIRAC.FrameworkSystem.Client.ProxyManagerClient import ProxyManagerClient -userName = False +class ProxyGetUploadedInfo(DIRACScript): + """ + handles input options for dirac-proxy-destroy + """ -def setUser(arg): - """ Set user + def initParameters(self): + self.userName = False - :param str arg: user name + def setUser(self, arg): + """ Set user - :return: S_OK() - """ - global userName - userName = arg - return S_OK() + :param str arg: user name + + :return: S_OK() + """ + self.userName = arg + return S_OK() -@DIRACScript() +@ProxyGetUploadedInfo() def main(self): - global userName - self.registerSwitch("u:", "user=", "User to query (by default oneself)", setUser) + self.registerSwitch("u:", "user=", "User to query (by default oneself)", self.setUser) self.parseCommandLine() result = getProxyInfo() @@ -59,26 +62,26 @@ def main(self): sys.exit(1) proxyProps = result['Value'] - userName = userName or proxyProps.get('username') - if not userName: + self.userName = self.userName or proxyProps.get('username') + if not self.userName: gLogger.notice("Your proxy don`t have username extension") sys.exit(1) - if userName in Registry.getAllUsers(): + if self.userName in Registry.getAllUsers(): if Properties.PROXY_MANAGEMENT not in proxyProps['groupProperties']: - if userName != proxyProps['username'] and userName != proxyProps['issuer']: + if self.userName != proxyProps['username'] and self.userName != proxyProps['issuer']: gLogger.notice("You can only query info about yourself!") sys.exit(1) - result = Registry.getDNForUsername(userName) + result = Registry.getDNForUsername(self.userName) if not result['OK']: gLogger.notice("Oops %s" % result['Message']) dnList = result['Value'] if not dnList: - gLogger.notice("User %s has no DN defined!" % userName) + gLogger.notice("User %s has no DN defined!" % self.userName) sys.exit(1) userDNs = dnList else: - userDNs = [userName] + userDNs = [self.userName] gLogger.notice("Checking for DNs %s" % " | ".join(userDNs)) pmc = ProxyManagerClient() diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py index f1a74a51d28..56bd6cde6a2 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_info.py @@ -30,15 +30,16 @@ from DIRAC.Core.Utilities.ReturnValues import S_OK -class Params(object): +class ProxyInfo(DIRACScript): - proxyLoc = False - vomsEnabled = True - csEnabled = True - steps = False - checkValid = False - checkClock = True - uploadedInfo = False + def initParameters(self): + self.steps = False + self.proxyLoc = False + self.csEnabled = True + self.checkValid = False + self.checkClock = True + self.vomsEnabled = True + self.uploadedInfo = False def showVersion(self, arg): print("Version:") @@ -75,35 +76,34 @@ def setManagerInfo(self, arg): return S_OK() -@DIRACScript() +@ProxyInfo() def main(self): - params = Params() - self.registerSwitch("f:", "file=", "File to use as user key", params.setProxyLocation) - self.registerSwitch("i", "version", "Print version", params.showVersion) - self.registerSwitch("n", "novoms", "Disable VOMS", params.disableVOMS) - self.registerSwitch("v", "checkvalid", "Return error if the proxy is invalid", params.validityCheck) - self.registerSwitch("x", "nocs", "Disable CS", params.disableCS) - self.registerSwitch("e", "steps", "Show steps info", params.showSteps) - self.registerSwitch("j", "noclockcheck", "Disable checking if time is ok", params.disableClockCheck) - self.registerSwitch("m", "uploadedinfo", "Show uploaded proxies info", params.setManagerInfo) + self.registerSwitch("f:", "file=", "File to use as user key", self.setProxyLocation) + self.registerSwitch("i", "version", "Print version", self.showVersion) + self.registerSwitch("n", "novoms", "Disable VOMS", self.disableVOMS) + self.registerSwitch("v", "checkvalid", "Return error if the proxy is invalid", self.validityCheck) + self.registerSwitch("x", "nocs", "Disable CS", self.disableCS) + self.registerSwitch("e", "steps", "Show steps info", self.showSteps) + self.registerSwitch("j", "noclockcheck", "Disable checking if time is ok", self.disableClockCheck) + self.registerSwitch("m", "uploadedinfo", "Show uploaded proxies info", self.setManagerInfo) self.disableCS() self.parseCommandLine() - from DIRAC.Core.Utilities.NTP import getClockDeviation from DIRAC import gLogger + from DIRAC.Core.Security import VOMS + from DIRAC.Core.Utilities.NTP import getClockDeviation from DIRAC.Core.Security.ProxyInfo import getProxyInfo, getProxyStepsInfo from DIRAC.Core.Security.ProxyInfo import formatProxyInfoAsString, formatProxyStepsInfoAsString - from DIRAC.Core.Security import VOMS from DIRAC.FrameworkSystem.Client.ProxyManagerClient import gProxyManager from DIRAC.ConfigurationSystem.Client.Helpers import Registry - if params.csEnabled: + if self.csEnabled: retVal = self.enableCS() if not retVal['OK']: print("Cannot contact CS to get user list") - if params.checkClock: + if self.checkClock: result = getClockDeviation() if result['OK']: deviation = result['Value'] @@ -114,7 +114,7 @@ def main(self): elif deviation > 60: gLogger.error("Your host clock seems to be off by more than a minute! Thats not good.") - result = getProxyInfo(params.proxyLoc, not params.vomsEnabled) + result = getProxyInfo(self.proxyLoc, not self.vomsEnabled) if not result['OK']: gLogger.error(result['Message']) sys.exit(1) @@ -123,7 +123,7 @@ def main(self): if not infoDict['isProxy']: gLogger.error('==============================\n!!! The proxy is not valid !!!') - if params.steps: + if self.steps: gLogger.notice("== Steps extended info ==") chain = infoDict['chain'] stepInfo = getProxyStepsInfo(chain)['Value'] @@ -133,7 +133,7 @@ def invalidProxy(msg): gLogger.error("Invalid proxy:", msg) sys.exit(1) - if params.uploadedInfo: + if self.uploadedInfo: result = gProxyManager.getUserProxiesInfo() if not result['OK']: gLogger.error("Could not retrieve the uploaded proxies info", result['Message']) @@ -156,10 +156,10 @@ def invalidProxy(msg): group.ljust(maxGroupLen), uploadedInfo[userDN][group].strftime("%Y/%m/%d %H:%M"))) - if params.checkValid: + if self.checkValid: if infoDict['secondsLeft'] == 0: invalidProxy("Proxy is expired") - if params.csEnabled and not infoDict['validGroup']: + if self.csEnabled and not infoDict['validGroup']: invalidProxy("Group %s is not valid" % infoDict['group']) if 'hasVOMS' in infoDict and infoDict['hasVOMS']: requiredVOMS = Registry.getVOMSAttributeForGroup(infoDict['group']) diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py index adec47c3ed7..7227dbe58a5 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py @@ -23,7 +23,7 @@ import DIRAC from DIRAC import gLogger, S_OK, S_ERROR -from DIRAC.Core.Base import Script +from DIRAC.Core.Security import X509Chain, ProxyInfo, Properties, VOMS from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.FrameworkSystem.Client import ProxyGeneration, ProxyUpload from DIRAC.Core.Security import X509Chain, ProxyInfo, Properties, VOMS @@ -34,14 +34,17 @@ __RCSID__ = "$Id$" -class Params(ProxyGeneration.CLIParams, ProxyUpload.CLIParams): +class ProxyInit(ProxyGeneration, ProxyUpload): - def __init__(self): - ProxyUpload.CLIParams.__init__(self) - ProxyGeneration.CLIParams.__init__(self) + def initParameters(self): + ProxyUpload.initParameters(self) + ProxyGeneration.initParameters(self) self.addVOMSExt = False self.uploadProxy = True self.uploadPilot = False + self.__issuerCert = False + self.__proxyGenerated = False + self.__uploadedInfo = {} self.switches = [ ("U", "upload", "Upload a long lived proxy to the ProxyManager (deprecated, see --no-upload)"), @@ -62,21 +65,11 @@ def disableProxyUpload(self, _arg): self.uploadProxy = False return S_OK() - -class ProxyInit(object): - - def __init__(self, piParams, script): - self.__script = script - self.__piParams = piParams - self.__issuerCert = False - self.__proxyGenerated = False - self.__uploadedInfo = {} - def getIssuerCert(self): if self.__issuerCert: return self.__issuerCert proxyChain = X509Chain.X509Chain() - resultProxyChainFromFile = proxyChain.loadChainFromFile(self.__piParams.certLoc) + resultProxyChainFromFile = proxyChain.loadChainFromFile(self.certLoc) if not resultProxyChainFromFile['OK']: gLogger.error("Could not load the proxy: %s" % resultProxyChainFromFile['Message']) sys.exit(1) @@ -85,12 +78,10 @@ def getIssuerCert(self): gLogger.error("Could not load the proxy: %s" % resultIssuerCert['Message']) sys.exit(1) self.__issuerCert = resultIssuerCert['Value'] - return self.__issuerCert def certLifeTimeCheck(self): - minLife = Registry.getGroupOption(self.__piParams.diracGroup, "SafeCertificateLifeTime", 2592000) - resultIssuerCert = self.getIssuerCert() - resultRemainingSecs = resultIssuerCert.getRemainingSecs() # pylint: disable=no-member + minLife = Registry.getGroupOption(self.diracGroup, "SafeCertificateLifeTime", 2592000) + resultRemainingSecs = self.__issuerCert.getRemainingSecs() # pylint: disable=no-member if not resultRemainingSecs['OK']: gLogger.error("Could not retrieve certificate expiration time", resultRemainingSecs['Message']) return @@ -103,17 +94,17 @@ def certLifeTimeCheck(self): gLogger.notice(msg) def addVOMSExtIfNeeded(self): - addVOMS = self.__piParams.addVOMSExt or Registry.getGroupOption(self.__piParams.diracGroup, "AutoAddVOMS", False) + addVOMS = self.addVOMSExt or Registry.getGroupOption(self.diracGroup, "AutoAddVOMS", False) if not addVOMS: return S_OK() - vomsAttr = Registry.getVOMSAttributeForGroup(self.__piParams.diracGroup) + vomsAttr = Registry.getVOMSAttributeForGroup(self.diracGroup) if not vomsAttr: return S_ERROR("Requested adding a VOMS extension but no VOMS attribute defined for group %s" % - self.__piParams.diracGroup) + self.diracGroup) resultVomsAttributes = VOMS.VOMS().setVOMSAttributes(self.__proxyGenerated, attribute=vomsAttr, - vo=Registry.getVOMSVOForGroup(self.__piParams.diracGroup)) + vo=Registry.getVOMSVOForGroup(self.diracGroup)) if not resultVomsAttributes['OK']: return S_ERROR("Could not add VOMS extensions to the proxy\nFailed adding VOMS attribute: %s" % resultVomsAttributes['Message']) @@ -125,22 +116,10 @@ def addVOMSExtIfNeeded(self): return result return S_OK() - def createProxy(self): - """ Creates the proxy on disk - """ - gLogger.notice("Generating proxy...") - resultProxyGenerated = ProxyGeneration.generateProxy(self.__piParams, self.__script) - if not resultProxyGenerated['OK']: - gLogger.error(resultProxyGenerated['Message']) - sys.exit(1) - self.__proxyGenerated = resultProxyGenerated['Value'] - return resultProxyGenerated - - def uploadProxy(self): + def _uploadProxy(self): """ Upload the proxy to the proxyManager service """ - issuerCert = self.getIssuerCert() - resultUserDN = issuerCert.getSubjectDN() # pylint: disable=no-member + resultUserDN = self.__issuerCert.getSubjectDN() # pylint: disable=no-member if not resultUserDN['OK']: return resultUserDN userDN = resultUserDN['Value'] @@ -149,15 +128,14 @@ def uploadProxy(self): if userDN in self.__uploadedInfo: expiry = self.__uploadedInfo[userDN].get('') if expiry: - if issuerCert.getNotAfterDate()['Value'] - datetime.timedelta(minutes=10) < expiry: # pylint: disable=no-member + if self.__issuerCert.getNotAfterDate()['Value'] - datetime.timedelta(minutes=10) < expiry: # pylint: disable=no-member gLogger.info('Proxy with DN "%s" already uploaded' % userDN) return S_OK() gLogger.info("Uploading %s proxy to ProxyManager..." % userDN) - self.__piParams.onTheFly = True - self.__piParams.proxyLifeTime = issuerCert.getRemainingSecs()['Value'] - 300 # pylint: disable=no-member - self.__piParams.rfcIfPossible = self.__piParams.rfc - resultProxyUpload = ProxyUpload.uploadProxy(self.__piParams) + self.onTheFly = True + self.proxyLifeTime = self.__issuerCert.getRemainingSecs()['Value'] - 300 # pylint: disable=no-member + resultProxyUpload = self.uploadProxy(self) if not resultProxyUpload['OK']: gLogger.error(resultProxyUpload['Message']) return resultProxyUpload @@ -222,12 +200,17 @@ def checkCAs(self): return S_OK() def doTheMagic(self): - proxy = self.createProxy() - if not proxy['OK']: - return proxy - + gLogger.notice("Generating proxy...") + result = self.generateProxy() + if not result['OK']: + gLogger.error(result['Message']) + sys.exit(1) + self.__proxyGenerated = result['Value'] + self.checkCAs() + self.getIssuerCert() self.certLifeTimeCheck() + resultProxyWithVOMS = self.addVOMSExtIfNeeded() if not resultProxyWithVOMS['OK']: if "returning a valid AC for the user" in resultProxyWithVOMS['Message']: @@ -237,34 +220,32 @@ def doTheMagic(self): gLogger.notice("Failed to add VOMS extension: no standard grid interface available") else: gLogger.error(resultProxyWithVOMS['Message']) - if self.__piParams.strict: + if self.strict: return resultProxyWithVOMS - if self.__piParams.uploadProxy: - resultProxyUpload = self.uploadProxy() + if self.uploadProxy: + resultProxyUpload = self._uploadProxy() if not resultProxyUpload['OK']: - if self.__piParams.strict: + if self.strict: return resultProxyUpload return S_OK() -@DIRACScript() +@ProxyInit() def main(self): - piParams = Params() - self.registerSwitches(piParams.switches) self.disableCS() + self.registerSwitches(self.switches) self.parseCommandLine(ignoreErrors=True) DIRAC.gConfig.setOptionValue("/DIRAC/Security/UseServerCertificate", "False") - pI = ProxyInit(piParams, self) - resultDoTheMagic = pI.doTheMagic() + resultDoTheMagic = self.doTheMagic() if not resultDoTheMagic['OK']: gLogger.fatal(resultDoTheMagic['Message']) sys.exit(1) - pI.printInfo() + self.printInfo() sys.exit(0) diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py index fb036b6962b..d10d2fe266d 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_restart_component.py @@ -1,13 +1,6 @@ #!/usr/bin/env python """ Restart DIRAC component using runsvctrl utility - -Usage: - dirac-restart-component [options] ... [System [Service|Agent]] - -Arguments: - System: Name of the system for the component (default *: all) - Service|Agent: Name of the particular component (default *: all) """ from __future__ import print_function from __future__ import absolute_import @@ -15,22 +8,22 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): self.disableCS() + self.registerArgument(" System: Name of the system for the component (default *: all)", + mandatory=False, default='*') + self.registerArgument(("Service: Name of the particular component (default *: all)", + "Agent: Name of the particular component (default *: all)"), + mandatory=False, default='*') self.parseCommandLine() - args = self.getPositionalArgs() + system, component = self.getPositionalArgs(group=True) if len(args) > 2: self.showHelp(exitCode=1) - system = '*' - component = '*' - if args: - system = args[0] if system != '*': if len(args) > 1: component = args[1] diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py index 8d3fef5ea49..226d64ab91b 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_start_component.py @@ -1,13 +1,6 @@ #!/usr/bin/env python """ Start DIRAC component using runsvctrl utility - -Usage: - dirac-start-component [options] ... [system [service|agent]] - -Arguments: - system: Name of the system for the component (default *: all) - service|agent: Name of the particular component (default *: all) """ from __future__ import print_function from __future__ import absolute_import @@ -22,15 +15,16 @@ @DIRACScript() def main(self): self.disableCS() + self.registerArgument(" System: Name of the system for the component (default *: all)", + mandatory=False, default='*') + self.registerArgument(("Service: Name of the particular component (default *: all)", + "Agent: Name of the particular component (default *: all)"), + mandatory=False, default='*') self.parseCommandLine() - args = self.getPositionalArgs() + system, component = self.getPositionalArgs(group=True) if len(args) > 2: self.showHelp(exitCode=1) - system = '*' - component = '*' - if len(args) > 0: - system = args[0] if system != '*': if len(args) > 1: component = args[1] diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py index 5177d6efe63..f9cfd830835 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_status_component.py @@ -20,25 +20,26 @@ from __future__ import absolute_import from __future__ import division -from DIRAC.Core.Base import Script + __RCSID__ = "$Id$" + from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): self.disableCS() + self.registerArgument(" System: Name of the system for the component (default *: all)", + mandatory=False, default='*') + self.registerArgument(("Service: Name of the particular component (default *: all)", + "Agent: Name of the particular component (default *: all)"), + mandatory=False, default='*') self.parseCommandLine() - args = self.getPositionalArgs() - - from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller - - __RCSID__ = "$Id$" - + system, component = self.getPositionalArgs(group=True) if len(args) > 2: self.showHelp(exitCode=1) - system = '*' - component = '*' + from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller + if len(args) > 0: system = args[0] if system != '*': diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py index af8aa47987c..dda5a6177a1 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_stop_component.py @@ -1,39 +1,31 @@ #!/usr/bin/env python """ Stop DIRAC component using runsvctrl utility - -Usage: - dirac-stop-component [options] ... [system [service|agent]] - -Arguments: - system: Name of the system for the component (default *: all) - service|agent: Name of the particular component (default *: all) """ from __future__ import print_function from __future__ import absolute_import from __future__ import division -from DIRAC.Core.Base import Script + __RCSID__ = "$Id$" + from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): self.disableCS() + self.registerArgument(" System: Name of the system for the component (default *: all)", + mandatory=False, default='*') + self.registerArgument(("Service: Name of the particular component (default *: all)", + "Agent: Name of the particular component (default *: all)"), + mandatory=False, default='*') self.parseCommandLine() - args = self.getPositionalArgs() - - from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller - - __RCSID__ = "$Id$" - + system, component = self.getPositionalArgs(group=True) if len(args) > 2: self.showHelp(exitCode=1) - system = '*' - component = '*' - if len(args) > 0: - system = args[0] + from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller + if system != '*': if len(args) > 1: component = args[1] diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py b/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py index 4581204efbb..a3ad05dd9e0 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_sys_sendmail.py @@ -14,15 +14,15 @@ 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" +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 from __future__ import absolute_import from __future__ import division + __RCSID__ = "$Id$" import socket @@ -30,15 +30,13 @@ import os from DIRAC import gLogger, exit as DIRACexit -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.FrameworkSystem.Client.NotificationClient import NotificationClient @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() + _, args = self.parseCommandLine(ignoreErrors=True) arg = "".join(args) diff --git a/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py b/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py index 98f62df7b62..fcd745465ec 100755 --- a/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py +++ b/src/DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py @@ -1,49 +1,42 @@ #!/usr/bin/env python """ Uninstallation of a DIRAC component - -Usage: - dirac-uninstall-component [options] ... System Component|System/Component - -Arguments: - System: Name of the DIRAC system (ie: WorkloadManagement) - Component: Name of the DIRAC component (ie: Matcher) """ from __future__ import absolute_import from __future__ import division from __future__ import print_function +__RCSID__ = "$Id$" + import socket -from DIRAC import exit as DIRACexit -from DIRAC import gLogger, S_OK -from DIRAC.Core.Base import Script +from DIRAC import gLogger, S_OK, exit as DIRACexit from DIRAC.Core.Utilities.PromptUser import promptUser from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.FrameworkSystem.Utilities import MonitoringUtilities from DIRAC.FrameworkSystem.Client.ComponentMonitoringClient import ComponentMonitoringClient -__RCSID__ = "$Id$" -force = False +class UninstallComponent(DIRACScript): + def initParameters(self): + self.force = False -def setForce(opVal): - global force - force = True - return S_OK() + def setForce(self, opVal): + self.force = True + return S_OK() -@DIRACScript() +@UninstallComponent() def main(self): - global force - from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller gComponentInstaller.exitOnError = True - self.registerSwitch("f", "force", "Forces the removal of the logs", setForce) - self.parseCommandLine() - args = self.getPositionalArgs() + self.registerSwitch("f", "force", "Forces the removal of the logs", self.setForce) + self.registerArgument(("System/Component: Full component name (ie: WorkloadManagement/Matcher)", + "System: Name of the DIRAC system (ie: WorkloadManagement)")) + self.registerArgument(" Component: Name of the DIRAC service (ie: Matcher)", mandatory=False) + _, args = self.parseCommandLine() if len(args) == 1: args = args[0].split('/') diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py index 9df12521b39..9f3c6a9d514 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_group.py @@ -2,12 +2,6 @@ """ Add or Modify a Group info in DIRAC -Usage: - dirac-admin-add-group [options] ... Property= ... - -Arguments: - Property=: Other properties to be added to the Group like (VOMSRole=XXXX) - Example: $ dirac-admin-add-group -G dirac_test """ @@ -23,64 +17,61 @@ from DIRAC.Core.Utilities.DIRACScript import DIRACScript -class Params(object): +class AddGroup(DIRACScript): - def __init__(self, script): - self.__script = script + def initParameters(self): self.groupName = None self.groupProperties = [] self.userNames = [] def setGroupName(self, arg): if self.groupName or not arg: - self.__script.showHelp(exitCode=1) + self.showHelp(exitCode=1) self.groupName = arg def addUserName(self, arg): if not arg: - self.__script.showHelp(exitCode=1) + self.showHelp(exitCode=1) if arg not in self.userNames: self.userNames.append(arg) def addProperty(self, arg): if not arg: - self.__script.showHelp(exitCode=1) + self.showHelp(exitCode=1) if arg not in self.groupProperties: self.groupProperties.append(arg) -@DIRACScript() +@AddGroup() def main(self): - params = Params(self) - self.registerSwitch('G:', 'GroupName:', 'Name of the Group (Mandatory)', params.setGroupName) + self.registerSwitch('G:', 'GroupName:', 'Name of the Group (Mandatory)', self.setGroupName) self.registerSwitch( 'U:', 'UserName:', 'Short Name of user to be added to the Group (Allow Multiple instances or None)', - params.addUserName) + self.addUserName) self.registerSwitch( 'P:', 'Property:', 'Property to be added to the Group (Allow Multiple instances or None)', - params.addProperty) + self.addProperty) + self.registerArgument(["Property=: Other properties to be added to the Group like (VOMSRole=XXXX)"], + mandatory=False) + _, args = self.parseCommandLine(ignoreErrors=True) - self.parseCommandLine(ignoreErrors=True) - - if params.groupName is None: + if self.groupName is None: self.showHelp(exitCode=1) - args = self.getPositionalArgs() - from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() exitCode = 0 errorList = [] groupProps = {} - if params.userNames: - groupProps['Users'] = ', '.join(params.userNames) - if params.groupProperties: - groupProps['Properties'] = ', '.join(params.groupProperties) + if self.userNames: + groupProps['Users'] = ', '.join(self.userNames) + if self.groupProperties: + groupProps['Properties'] = ', '.join(self.groupProperties) for prop in args: pl = prop.split("=") @@ -93,8 +84,8 @@ def main(self): self.gLogger.info("Setting property %s to %s" % (pName, pValue)) groupProps[pName] = pValue - if not diracAdmin.csModifyGroup(params.groupName, groupProps, createIfNonExistant=True)['OK']: - errorList.append(("add group", "Cannot register group %s" % params.groupName)) + if not diracAdmin.csModifyGroup(self.groupName, groupProps, createIfNonExistant=True)['OK']: + errorList.append(("add group", "Cannot register group %s" % self.groupName)) exitCode = 255 else: result = diracAdmin.csCommitChanges() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py index c6f0e91a225..e6755439c3a 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_host.py @@ -2,12 +2,6 @@ """ Add or Modify a Host info in DIRAC -Usage: - dirac-admin-add-host [options] ... Property= ... - -Arguments: - Property=: Other properties to be added to the Host like (Responsible=XXX) - Example: $ dirac-admin-add-host -H dirac.i2np3.fr -D /O=GRID-FR/C=FR/O=CNRS/OU=CC-IN2P3/CN=dirac.in2p3.fr """ @@ -21,10 +15,9 @@ from DIRAC.Core.Utilities.DIRACScript import DIRACScript -class Params(object): +class AddHost(DIRACScript): - def __init__(self, script): - self.__script = script + def initParameters(self): self.hostName = None self.hostDN = None self.hostProperties = [] @@ -38,40 +31,39 @@ def __init__(self, script): def setHostName(self, arg): if self.hostName or not arg: - self.__script.showHelp(exitCode=1) + self.showHelp(exitCode=1) self.hostName = arg def setHostDN(self, arg): if self.hostDN or not arg: - self.__script.showHelp(exitCode=1) + self.showHelp(exitCode=1) self.hostDN = arg def addProperty(self, arg): if not arg: - self.__script.showHelp(exitCode=1) + self.showHelp(exitCode=1) if arg not in self.hostProperties: self.hostProperties.append(arg) @DIRACScript() def main(self): - params = Params(self) - self.registerSwitches(params.switches) - self.parseCommandLine(ignoreErrors=True) + self.registerSwitches(self.switches) + self.registerArgument(["Property=: Other properties to be added to the Host like (Responsible=XXX)"], + mandatory=False) + _, args = self.parseCommandLine(ignoreErrors=True) - if params.hostName is None or params.hostDN is None: + if self.hostName is None or self.hostDN is None: self.showHelp(exitCode=1) - args = self.getPositionalArgs() - from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() exitCode = 0 errorList = [] - hostProps = {'DN': params.hostDN} - if params.hostProperties: - hostProps['Properties'] = ', '.join(params.hostProperties) + hostProps = {'DN': self.hostDN} + if self.hostProperties: + hostProps['Properties'] = ', '.join(self.hostProperties) for prop in args: pl = prop.split("=") @@ -84,8 +76,8 @@ def main(self): self.gLogger.info("Setting property %s to %s" % (pName, pValue)) hostProps[pName] = pValue - if not diracAdmin.csModifyHost(params.hostName, hostProps, createIfNonExistant=True)['OK']: - errorList.append(("add host", "Cannot register host %s" % params.hostName)) + if not diracAdmin.csModifyHost(self.hostName, hostProps, createIfNonExistant=True)['OK']: + errorList.append(("add host", "Cannot register host %s" % self.hostName)) exitCode = 255 else: result = diracAdmin.csCommitChanges() @@ -96,13 +88,13 @@ def main(self): if exitCode == 0: from DIRAC.FrameworkSystem.Client.ComponentMonitoringClient import ComponentMonitoringClient cmc = ComponentMonitoringClient() - ret = cmc.hostExists(dict(HostName=params.hostName)) + ret = cmc.hostExists(dict(HostName=self.hostName)) if not ret['OK']: self.gLogger.error('Cannot check if host is registered in ComponentMonitoring', ret['Message']) elif ret['Value']: self.gLogger.info('Host already registered in ComponentMonitoring') else: - ret = cmc.addHost(dict(HostName=params.hostName, CPU='TO_COME')) + ret = cmc.addHost(dict(HostName=self.hostName, CPU='TO_COME')) if not ret['OK']: self.gLogger.error('Failed to add Host to ComponentMonitoring', ret['Message']) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py b/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py index 7a29067a6ec..ab2f8e36e4e 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_add_user.py @@ -2,12 +2,6 @@ """ Add or Modify a User info in DIRAC -Usage: - dirac-admin-add-user [options] ... Property= ... - -Arguments: - Property=: Properties to be added to the User like (Phone=XXXX) - Example: $ dirac-admin-add-user -N vhamar -D /O=GRID/C=FR/O=CNRS/OU=CPPM/CN=Vanessa Hamar -M hamar@cppm.in2p3.fr -G dirac_user """ @@ -21,10 +15,9 @@ from DIRAC.Core.Utilities.DIRACScript import DIRACScript -class Params(object): +class AddUser(DIRACScript): - def __init__(self, script): - self.__script = script + def initParameters(self): self.userName = None self.userDN = None self.userMail = None @@ -32,44 +25,44 @@ def __init__(self, script): def setUserName(self, arg): if self.userName or not arg: - self.__script.showHelp(exitCode=1) + self.showHelp(exitCode=1) self.userName = arg def setUserDN(self, arg): if self.userDN or not arg: - self.__script.showHelp(exitCode=1) + self.showHelp(exitCode=1) self.userDN = arg def setUserMail(self, arg): if self.userMail or not arg: - self.__script.showHelp(exitCode=1) + self.showHelp(exitCode=1) if not arg.find('@') > 0: - self.__script.gLogger.error('Not a valid mail address', arg) + self.gLogger.error('Not a valid mail address', arg) DIRAC.exit(-1) self.userMail = arg def addUserGroup(self, arg): if not arg: - self.__script.showHelp(exitCode=1) + self.showHelp(exitCode=1) if arg not in self.userGroups: self.userGroups.append(arg) -@DIRACScript() +@AddUser() def main(self): - params = Params(self) - self.registerSwitch('N:', 'UserName:', 'Short Name of the User (Mandatory)', params.setUserName) - self.registerSwitch('D:', 'UserDN:', 'DN of the User Certificate (Mandatory)', params.setUserDN) - self.registerSwitch('M:', 'UserMail:', 'eMail of the user (Mandatory)', params.setUserMail) + self.registerSwitch('N:', 'UserName:', 'Short Name of the User (Mandatory)', self.setUserName) + self.registerSwitch('D:', 'UserDN:', 'DN of the User Certificate (Mandatory)', self.setUserDN) + self.registerSwitch('M:', 'UserMail:', 'eMail of the user (Mandatory)', self.setUserMail) self.registerSwitch( 'G:', 'UserGroup:', 'Name of the Group for the User (Allow Multiple instances or None)', - params.addUserGroup) - + self.addUserGroup) + self.registerArgument(["Property=: Properties to be added to the User like (Phone=XXXX)"], + mandatory=False) self.parseCommandLine(ignoreErrors=True) - if params.userName is None or params.userDN is None or params.userMail is None: + if self.userName is None or self.userDN is None or self.userMail is None: self.showHelp(exitCode=1) args = self.getPositionalArgs() @@ -79,9 +72,9 @@ def main(self): exitCode = 0 errorList = [] - userProps = {'DN': params.userDN, 'Email': params.userMail} - if params.userGroups: - userProps['Groups'] = params.userGroups + userProps = {'DN': self.userDN, 'Email': self.userMail} + if self.userGroups: + userProps['Groups'] = self.userGroups for prop in args: pl = prop.split("=") if len(pl) < 2: @@ -90,11 +83,11 @@ def main(self): else: pName = pl[0] pValue = "=".join(pl[1:]) - self.__script.gLogger.info("Setting property %s to %s" % (pName, pValue)) + self.gLogger.info("Setting property %s to %s" % (pName, pValue)) userProps[pName] = pValue - if not diracAdmin.csModifyUser(params.userName, userProps, createIfNonExistant=True)['OK']: - errorList.append(("add user", "Cannot register user %s" % params.userName)) + if not diracAdmin.csModifyUser(self.userName, userProps, createIfNonExistant=True)['OK']: + errorList.append(("add user", "Cannot register user %s" % self.userName)) exitCode = 255 else: result = diracAdmin.csCommitChanges() @@ -103,7 +96,7 @@ def main(self): exitCode = 255 for error in errorList: - self.__script.gLogger.error("%s: %s" % error) + self.gLogger.error("%s: %s" % error) DIRAC.exit(exitCode) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py b/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py index a9c4fcff65c..1e627be291e 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_allow_site.py @@ -6,13 +6,6 @@ """ Add Site to Active mask for current Setup -Usage: - dirac-admin-allow-site [options] ... Site Comment - -Arguments: - Site: Name of the Site - Comment: Reason of the action - Example: $ dirac-admin-allow-site LCG.IN2P3.fr "FRANCE" """ @@ -30,11 +23,13 @@ @DIRACScript() def main(self): self.registerSwitch("E:", "email=", "Boolean True/False (True by default)") + self.registerArgument("Site: Name of the Site") + self.registerArgument("Comment: Reason of the action") self.parseCommandLine(ignoreErrors=True) + from DIRAC import exit as DIRACExit, gConfig, gLogger from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations - from DIRAC import exit as DIRACExit, gConfig, gLogger def getBoolean(value): if value.lower() == 'true': @@ -49,11 +44,6 @@ def getBoolean(value): if switch[0] == "email": email = getBoolean(switch[1]) - args = self.getPositionalArgs() - - if len(args) < 2: - self.showHelp() - diracAdmin = DiracAdmin() exitCode = 0 errorList = [] @@ -71,8 +61,7 @@ def getBoolean(value): # print 'Script stopped' # DIRACExit( 0 ) - site = args[0] - comment = args[1] + site, comment = self.getPositionalArgs(group=True) result = diracAdmin.allowSite(site, comment, printOutput=True) if not result['OK']: errorList.append((site, result['Message'])) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py b/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py index 9e1af788137..dbaf4aaa190 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_ban_site.py @@ -6,13 +6,6 @@ """ Remove Site from Active mask for current Setup -Usage: - dirac-admin-ban-site [options] ... Site Comment - -Arguments: - Site: Name of the Site - Comment: Reason of the action - Example: $ dirac-admin-ban-site LCG.IN2P3.fr "Pilot installation problems" """ @@ -30,6 +23,8 @@ @DIRACScript() def main(self): self.registerSwitch("E:", "email=", "Boolean True/False (True by default)") + self.registerArgument("Site: Name of the Site") + self.registerArgument("Comment: Reason of the action") self.parseCommandLine(ignoreErrors=True) from DIRAC import exit as DIRACExit, gConfig, gLogger @@ -50,11 +45,6 @@ def getBoolean(value): if switch[0] == "email": email = getBoolean(switch[1]) - args = self.getPositionalArgs() - - if len(args) < 2: - self.showHelp() - diracAdmin = DiracAdmin() exitCode = 0 errorList = [] @@ -72,8 +62,7 @@ def getBoolean(value): # print 'Script stopped' # DIRACExit( 0 ) - site = args[0] - comment = args[1] + site, comment = self.getPositionalArgs(group=True) result = diracAdmin.banSite(site, comment, printOutput=True) if not result['OK']: errorList.append((site, result['Message'])) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py b/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py index 4ba74623b84..f47c7f7ecc8 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_ce_info.py @@ -6,12 +6,6 @@ """ Retrieve Site Associated to a given CE -Usage: - dirac-admin-ce-info [options] ... CE ... - -Arguments: - CE: Name of the CE (mandatory) - Example: $ dirac-admin-ce-info LCG.IN2P3.fr """ @@ -27,22 +21,20 @@ @DIRACScript() def main(self): + self.registerArgument("CE: Name of the CE") self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() + ce = self.getPositionalArgs(group=True) from DIRAC.ConfigurationSystem.Client.Helpers import cfgPath from DIRAC.ConfigurationSystem.Client.Helpers.Resources import getCESiteMapping - if len(args) < 1: - self.showHelp(exitCode=1) - - res = getCESiteMapping(args[0]) + res = getCESiteMapping(ce) if not res['OK']: gLogger.error(res['Message']) Dexit(1) - site = res['Value'][args[0]] + site = res['Value'][ce] - res = gConfig.getOptionsDict(cfgPath('Resources', 'Sites', site.split('.')[0], site, 'CEs', args[0])) + res = gConfig.getOptionsDict(cfgPath('Resources', 'Sites', site.split('.')[0], site, 'CEs', ce)) if not res['OK']: gLogger.error(res['Message']) Dexit(1) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py b/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py index d773cc91d44..5903928f05a 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_delete_user.py @@ -6,12 +6,6 @@ """ Remove User from Configuration -Usage: - dirac-admin-delete-user [options] ... User ... - -Arguments: - User: User name - Example: $ dirac-admin-delete-user vhamar """ @@ -28,8 +22,8 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() + self.registerArgument(["User: User name"]) + _, args = self.parseCommandLine(ignoreErrors=True) from DIRAC import exit as DIRACExit from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin @@ -37,9 +31,6 @@ def main(self): exitCode = 0 errorList = [] - if len(args) < 1: - self.showHelp() - choice = six.moves.input("Are you sure you want to delete user/s %s? yes/no [no]: " % ", ".join(args)) choice = choice.lower() if choice not in ("yes", "y"): 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 df4df8e11d3..8c2b0a86427 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_banned_sites.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_banned_sites.py @@ -4,8 +4,7 @@ # Author : Stuart Paterson ######################################################################## """ -Usage: - dirac-admin-get-banned-sites [options] ... +Get banned sites Example: $ dirac-admin-get-banned-sites 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 6aac46c51c0..2ef07a4577e 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 @@ -6,12 +6,6 @@ """ Retrieve the output of the pilot that executed a given job -Usage: - dirac-admin-get-job-pilot-output [options] ... JobID ... - -Arguments: - JobID: DIRAC ID of the Job - Example: $ dirac-admin-get-job-pilot-output 34 """ @@ -26,11 +20,8 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp() + self.registerArgument(["JobID: DIRAC ID of the Job"]) + _, args = self.parseCommandLine(ignoreErrors=True) from DIRAC import exit as DIRACExit from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin 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 24704f2d266..7046bd74b9b 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_job_pilots.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_job_pilots.py @@ -6,12 +6,6 @@ """ Retrieve info about pilots that have matched a given Job -Usage: - dirac-admin-get-job-pilots [options] ... JobID - -Arguments: - JobID: DIRAC ID of the Job - Example: $ dirac-admin-get-job-pilots 1848 {'https://marlb.in2p3.fr:9000/bqYViq6KrVgGfr6wwgT45Q': {'AccountingSent': 'False', @@ -45,11 +39,8 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp() + self.registerArgument(["JobID: DIRAC ID of the Job"]) + _, args = self.parseCommandLine(ignoreErrors=True) from DIRAC import exit as DIRACExit from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin 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 1fe51ea2778..c5cc17ad3c9 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_info.py @@ -6,12 +6,6 @@ """ Retrieve available info about the given pilot -Usage: - dirac-admin-get-pilot-info [options] ... PilotID ... - -Arguments: - PilotID: Grid ID of the pilot - Example: $ dirac-admin-get-pilot-info https://marlb.in2p3.fr:9000/26KCLKBFtxXKHF4_ZrQjkw {'https://marlb.in2p3.fr:9000/26KCLKBFtxXKHF4_ZrQjkw': {'AccountingSent': 'False', @@ -42,7 +36,7 @@ from DIRAC.Core.Utilities.DIRACScript import DIRACScript -class Params(object): +class GetPilotInfo(DIRACScript): def __init__(self): self.extendedPrint = False @@ -51,21 +45,15 @@ def setExtendedPrint(self, _arg): self.extendedPrint = True -@DIRACScript() +@GetPilotInfo() def main(self): - params = Params() - self.registerSwitch('e', 'extended', 'Get extended printout', params.setExtendedPrint) - self.parseCommandLine(ignoreErrors=True) + self.registerSwitch('e', 'extended', 'Get extended printout', self.setExtendedPrint) + _, args = self.parseCommandLine(ignoreErrors=True) from DIRAC import exit as DIRACExit from DIRAC.Interfaces.API.Dirac import Dirac from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp() - diracAdmin = DiracAdmin() dirac = Dirac() exitCode = 0 @@ -78,7 +66,7 @@ def main(self): exitCode = 2 else: res = result['Value'][gridID] - if params.extendedPrint: + if self.extendedPrint: tab = '' for key in [ 'PilotJobReference', 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 b334b681c8e..ed84f7daefc 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 @@ -6,12 +6,6 @@ """ Retrieve logging info of a Grid pilot -Usage: - dirac-admin-get-pilot-logging-info [options] ... PilotID ... - -Arguments: - PilotID: Grid ID of the pilot - Example: $ dirac-admin-get-pilot-logging-info https://marlb.in2p3.fr:9000/26KCLKBFtxXKHF4_ZrQjkw Pilot Reference: dirac-admin-get-pilot-logging-info https://marlb.in2p3.fr:9000/26KCLKBFtxXKHF4_ZrQjkw @@ -38,17 +32,13 @@ __RCSID__ = "$Id$" # pylint: disable=wrong-import-position -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp() + self.registerArgument(["PilotID: Grid ID of the pilot"]) + _, args = self.parseCommandLine(ignoreErrors=True) from DIRAC import exit as DIRACExit from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin 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 e6efeb96e3d..81aab8db1f4 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_output.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_pilot_output.py @@ -6,12 +6,6 @@ """ Retrieve output of a Grid pilot -Usage: - dirac-admin-get-pilot-output [options] ... PilotID ... - -Arguments: - PilotID: Grid ID of the pilot - Example: $ dirac-admin-get-pilot-output https://marlb.in2p3.fr:9000/26KCLKBFtxXKHF4_ZrQjkw $ ls -la @@ -28,11 +22,8 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp() + self.registerArgument(["PilotID: Grid ID of the pilot"]) + _, args = self.parseCommandLine(ignoreErrors=True) from DIRAC import exit as DIRACExit from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin 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 36a9fee1def..5def07a3787 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_get_site_mask.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_get_site_mask.py @@ -6,9 +6,6 @@ """ 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 diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py b/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py index 1751ba2b750..d742a6c4964 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_list_hosts.py @@ -4,8 +4,7 @@ # Author : Adrian Casajus ######################################################################## """ -Usage: - dirac-admin-list-hosts [options] ... +List hosts Example: $ dirac-admin-list-hosts @@ -26,7 +25,6 @@ def main(self): self.registerSwitch("e", "extended", "Show extended info") self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() from DIRAC import exit as DIRACExit from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py b/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py index 03e9ceaf9b1..bb9593fc756 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_list_users.py @@ -6,12 +6,6 @@ """ Lists the users in the Configuration. If no group is specified return all users. -Usage: - dirac-admin-list-users [options] ... [Group] ... - -Arguments: - Group: Only users from this group (default: all) - Example: $ dirac-admin-list-users All users registered: @@ -31,11 +25,10 @@ @DIRACScript() def main(self): self.registerSwitch("e", "extended", "Show extended info") + self.registerArgument(["Group: Only users from this group (default: all)"], + default=['all'], mandatory=False) self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) == 0: - args = ['all'] + groups = self.getPositionalArgs(group=True) import DIRAC from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin @@ -68,8 +61,8 @@ def describeUsersInGroup(group=False): result = diracAdmin.csDescribeUsers(result['Value']) print(diracAdmin.pPrint.pformat(result['Value'])) - for group in args: - if 'all' in args: + for group in groups: + if 'all' in groups: group = False if not extendedInfo: printUsersInGroup(group) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py b/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py index cb68e076734..4c959758b68 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_modify_user.py @@ -6,14 +6,6 @@ """ Modify a user in the CS. -Usage: - dirac-admin-modify-user [options] ... user DN group [group] ... - -Arguments: - user: User name (mandatory) - DN: DN of the User (mandatory) - group: Add the user to the group (mandatory) - Example: $ dirac-admin-modify-user vhamar /C=FR/O=Org/CN=User dirac_user """ @@ -31,13 +23,11 @@ def main(self): self.registerSwitch("p:", "property=", "Add property to the user =") self.registerSwitch("f", "force", "create the user if it doesn't exist") + self.registerArgument(" user: User name") + self.registerArgument(" DN: DN of the User") + self.registerArgument(["group: Add the user to the group"]) self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 3: - self.showHelp(exitCode=1) - from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() exitCode = 0 @@ -60,9 +50,7 @@ def main(self): print("Setting property %s to %s" % (pName, pValue)) userProps[pName] = pValue - userName = args[0] - userProps['DN'] = args[1] - userProps['Groups'] = args[2:] + userName, userProps['DN'], userProps['Groups'] = self.getPositionalArgs(group=True) if not diracAdmin.csModifyUser(userName, userProps, createIfNonExistant=forceCreation): errorList.append(("modify user", "Cannot modify user %s" % userName)) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py b/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py index fcdf77fd3f7..66d0f7cd288 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_pilot_summary.py @@ -4,8 +4,7 @@ # Author : Stuart Paterson ######################################################################## """ -Usage: - dirac-admin-pilot-summary [options] ... +Pilot summary Example: $ dirac-admin-pilot-summary @@ -39,7 +38,6 @@ @DIRACScript() def main(self): self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py b/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py index a1c05f1024a..97dd45a84ca 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_reset_job.py @@ -6,12 +6,6 @@ """ Reset a job or list of jobs in the WMS -Usage: - dirac-admin-reset-job [options] ... JobID ... - -Arguments: - JobID: DIRAC ID of the Job - Example: $ dirac-admin-reset-job 1848 Reset Job 1848 @@ -28,12 +22,8 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp() + self.registerArgument(["JobID: DIRAC ID of the Job"]) + _, args = self.parseCommandLine(ignoreErrors=True) from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py b/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py index bc31130f00f..7e87d5be5f7 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_service_ports.py @@ -6,12 +6,6 @@ """ Print the service ports for the specified setup -Usage: - dirac-admin-service-ports [options] ... [Setup] - -Arguments: - Setup: Name of the setup - Example: $ dirac-admin-service-ports {'Framework/ProxyManager': 9152, @@ -35,12 +29,9 @@ @DIRACScript() def main(self): + self.registerArgument("Setup: Name of the setup", default='', mandatory=False) self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - setup = '' - if args: - setup = args[0] + setup = self.getPositionalArgs(group=True) from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() 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 c994f8c54dd..cdde6fd0d7f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_set_site_protocols.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_set_site_protocols.py @@ -6,12 +6,6 @@ """ Defined protocols for each SE for a given site. -Usage: - dirac-admin-set-site-protocols [options] ... Protocol ... - -Arguments: - Protocol: SE access protocol (mandatory) - Example: $ dirac-admin-set-site-protocols --Site=LCG.IN2P3.fr SRM2 """ @@ -28,15 +22,14 @@ @DIRACScript() def main(self): self.registerSwitch("", "Site=", "Site for which protocols are to be set (mandatory)") - self.parseCommandLine(ignoreErrors=True) + self.registerArgument(["Protocol: SE access protocol"], mandatory=False) + switches, args = self.parseCommandLine(ignoreErrors=True) site = None - for switch in self.getUnprocessedSwitches(): + for switch in switches: if switch[0].lower() == "site": site = switch[1] - args = self.getPositionalArgs() - if not site or not args: self.showHelp(exitCode=1) diff --git a/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py b/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py index 8b6ab5dfd8c..bec8edf3c2a 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_site_info.py @@ -6,12 +6,6 @@ """ Print Configuration information for a given Site -Usage: - dirac-admin-site-info [options] ... Site ... - -Arguments: - Site: Name of the Site - Example: $ dirac-admin-site-info LCG.IN2P3.fr {'CE': 'cclcgceli01.in2p3.fr, cclcgceli03.in2p3.fr, sbgce1.in2p3.fr', @@ -33,18 +27,15 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp() + self.registerArgument(["Site: Name of the Site"]) + _, sites = self.parseCommandLine(ignoreErrors=True) from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() exitCode = 0 errorList = [] - for site in args: + for site in sites: result = diracAdmin.getSiteSection(site, printOutput=True) if not result['OK']: 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 bae322a5af6..0135089ddba 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_admin_site_mask_logging.py +++ b/src/DIRAC/Interfaces/scripts/dirac_admin_site_mask_logging.py @@ -6,12 +6,6 @@ """ Retrieves site mask logging information. -Usage: - dirac-admin-site-mask-logging [options] ... Site ... - -Arguments: - Site: Name of the Site - Example: $ dirac-admin-site-mask-logging LCG.IN2P3.fr Site Mask Logging Info for LCG.IN2P3.fr @@ -29,18 +23,15 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp() + self.registerArgument(["Site: Name of the Site"]) + _, sites = self.parseCommandLine(ignoreErrors=True) from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() exitCode = 0 errorList = [] - for site in args: + for site in sites: result = diracAdmin.getSiteMaskLogging(site, printOutput=True) if not result['OK']: errorList.append((site, result['Message'])) 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 526556c1e8c..d5767e0f9a9 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 @@ -6,12 +6,6 @@ """ Sync users in Configuration with the cfg contents. -Usage: - dirac-admin-sync-users-from-file [options] ... UserCfg - -Arguments: - UserCfg: Cfg FileName with Users as sections containing DN, Groups, and other properties as options - Example: $ dirac-admin-sync-users-from-file file_users.cfg """ @@ -29,13 +23,12 @@ @DIRACScript() def main(self): self.registerSwitch("t", "test", "Only test. Don't commit changes") + self.registerArgument("UserCfg: Cfg FileName with Users as sections containing \ + DN, Groups, and other properties as options") self.parseCommandLine(ignoreErrors=True) args = self.getExtraCLICFGFiles() - if len(args) < 1: - self.showHelp() - from DIRAC.Interfaces.API.DiracAdmin import DiracAdmin diracAdmin = DiracAdmin() exitCode = 0 diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py b/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py index fa7ec66d9f2..8ce26bee331 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_get_file.py @@ -6,12 +6,6 @@ """ Retrieve a single file or list of files from Grid storage to the current directory. -Usage: - dirac-dms-get-file [options] ... LFN ... - -Arguments: - LFN: Logical File Name or file containing LFNs - Example: $ dirac-dms-get-file /formation/user/v/vhamar/Example.txt {'Failed': {}, @@ -29,6 +23,7 @@ @DIRACScript() def main(self): + self.registerArgument(["LFN: Logical File Name or file containing LFNs"]) self.parseCommandLine(ignoreErrors=True) lfns = self.getPositionalArgs() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py index bdbc8d9c240..77c00c13782 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_accessURL.py @@ -6,14 +6,6 @@ """ Retrieve an access URL for an LFN replica given a valid DIRAC SE. -Usage: - dirac-dms-lfn-accessURL [options] ... LFN SE [PROTO] - -Arguments: - LFN: Logical File Name or file containing LFNs (mandatory) - SE: Valid DIRAC SE (mandatory) - PROTO: Optional protocol for accessURL - Example: $ dirac-dms-lfn-accessURL /formation/user/v/vhamar/Example.txt DIRAC-USER {'Failed': {}, @@ -32,27 +24,21 @@ @DIRACScript() def main(self): + self.registerArgument("LFN: Logical File Name or file containing LFNs") + self.registerArgument("SE: Valid DIRAC SE") + self.registerArgument("PROTO: Optional protocol for accessURL", default=False, mandatory=False) self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() + lfn, seName, proto = self.getPositionalArgs(group=True) # pylint: disable=wrong-import-position from DIRAC.Interfaces.API.Dirac import Dirac - if len(args) < 2: - self.showHelp(exitCode=1) - if len(args) > 3: print('Only one LFN SE pair will be considered') dirac = Dirac() exitCode = 0 - lfn = args[0] - seName = args[1] - proto = False - if len(args) > 2: - proto = args[2] - try: with open(lfn, 'r') as f: lfns = f.read().splitlines() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py index 5f6943c63a3..311a15dbe03 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_metadata.py @@ -6,12 +6,6 @@ """ Obtain replica metadata from file catalogue client. -Usage: - dirac-dms-lfn-metadata [options] ... LFN ... - -Arguments: - LFN: Logical File Name or file containing LFNs - Example: $ dirac-dms-lfn-metadata /formation/user/v/vhamar/test.txt {'Failed': {}, @@ -41,11 +35,8 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - lfns = self.getPositionalArgs() - - if len(lfns) < 1: - self.showHelp() + self.registerArgument(["LFN: Logical File Name or file containing LFNs"]) + _, lfns = self.parseCommandLine(ignoreErrors=True) from DIRAC.Interfaces.API.Dirac import Dirac dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py index 005096885a0..59a47052f72 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_lfn_replicas.py @@ -6,12 +6,6 @@ """ Obtain replica information from file catalogue client. -Usage: - dirac-admin-lfn-replicas [options] ... LFN ... - -Arguments: - LFN: Logical File Name or file containing LFNs - Example: $ dirac-dms-lfn-replicas /formation/user/v/vhamar/Test.txt {'Failed': {}, @@ -31,17 +25,14 @@ @DIRACScript() def main(self): self.registerSwitch('a', "All", " Also show inactive replicas") - self.parseCommandLine(ignoreErrors=True) - lfns = self.getPositionalArgs() - switches = self.getUnprocessedSwitches() + self.registerArgument(["LFN: Logical File Name or file containing LFNs"]) + switches, lfns = self.parseCommandLine(ignoreErrors=True) active = True for switch in switches: opt = switch[0].lower() if opt in ("a", "all"): active = False - if len(lfns) < 1: - self.showHelp(exitCode=1) from DIRAC.Interfaces.API.Dirac import Dirac dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py index 3c57f59daa9..e2f39dd4578 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_accessURL.py @@ -5,13 +5,6 @@ ######################################################################## """ Retrieve an access URL for a PFN given a valid DIRAC SE - -Usage: - dirac-dms-pfn-accessURL [options] ... PFN SE - -Arguments: - PFN: Physical File Name or file containing PFNs (mandatory) - SE: Valid DIRAC SE (mandatory) """ from __future__ import print_function from __future__ import absolute_import @@ -25,11 +18,9 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 2: - self.showHelp(exitCode=1) + self.registerArgument("PFN: Physical File Name or file containing PFNs") + self.registerArgument("SE: Valid DIRAC SE") + _, args = self.parseCommandLine(ignoreErrors=True) if len(args) > 2: print('Only one PFN SE pair will be considered') @@ -38,8 +29,7 @@ def main(self): dirac = Dirac() exitCode = 0 - pfn = args[0] - seName = args[1] + pfn, seName = args try: with open(pfn, 'r') as f: pfns = f.read().splitlines() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py index 8f5afd0733e..e33963030ed 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_pfn_metadata.py @@ -5,13 +5,6 @@ ######################################################################## """ Retrieve metadata for a PFN given a valid DIRAC SE - -Usage: - dirac-dms-pfn-metadata [options] ... PFN SE - -Arguments: - PFN: Physical File Name or file containing PFNs (mandatory) - SE: Valid DIRAC SE (mandatory) """ from __future__ import print_function from __future__ import absolute_import @@ -25,11 +18,9 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 2: - self.showHelp(exitCode=1) + self.registerArgument("PFN: Physical File Name or file containing PFNs") + self.registerArgument("SE: Valid DIRAC SE") + _, args = self.parseCommandLine(ignoreErrors=True) if len(args) > 2: print('Only one PFN SE pair will be considered') @@ -38,8 +29,7 @@ def main(self): dirac = Dirac() exitCode = 0 - pfn = args[0] - seName = args[1] + pfn, seName = args try: f = open(pfn, 'r') pfns = f.read().splitlines() diff --git a/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py b/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py index 3d3207db4cb..6e3d02d3b6c 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py +++ b/src/DIRAC/Interfaces/scripts/dirac_dms_replicate_lfn.py @@ -6,15 +6,6 @@ """ Replicate an existing LFN to another Storage Element -Usage: - dirac-dms-replicate-lfn [options] ... LFN Dest [Source [Cache]] - -Arguments: - LFN: Logical File Name or file containing LFNs (mandatory) - Dest: Valid DIRAC SE (mandatory) - Source: Valid DIRAC SE - Cache: Local directory to be used as cache - Example: $ dirac-dms-replicate-lfn /formation/user/v/vhamar/Test.txt DIRAC-USER {'Failed': {}, @@ -33,20 +24,16 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() + self.registerArgument("LFN: Logical File Name or file containing LFNs") + self.registerArgument("Dest: Valid DIRAC SE") + self.registerArgument("Source: Valid DIRAC SE", default='', mandatory=False) + self.registerArgument("Cache: Local directory to be used as cache", default='', mandatory=False) + _, args = self.parseCommandLine(ignoreErrors=True) - if len(args) < 2 or len(args) > 4: + if len(args) > 4: self.showHelp(exitCode=1) - lfn = args[0] - seName = args[1] - sourceSE = '' - localCache = '' - if len(args) > 2: - sourceSE = args[2] - if len(args) == 4: - localCache = args[3] + lfn, seName, sourceSE, localCache = self.getPositionalArgs(group=True) from DIRAC.Interfaces.API.Dirac import Dirac dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py b/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py index 9aba1b06ab6..3d4d4def81f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py +++ b/src/DIRAC/Interfaces/scripts/dirac_framework_ping_service.py @@ -6,14 +6,6 @@ """ Ping the given DIRAC Service -Usage: - dirac-framework-ping-service [options] ... System Service|System/Agent - -Arguments: - System: Name of the DIRAC system (ie: WorkloadManagement) - Service: Name of the DIRAC service (ie: Matcher) - url: URL of the service to ping (instead of System and Service) - Example: $ dirac-framework-ping-service WorkloadManagement PilotManager {'OK': True, @@ -50,8 +42,11 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() + self.registerArgument(("URL: URL of the service to ping (instead of System and Service)", + "System/Service: Full component name (ie: WorkloadManagement/Matcher)", + "System: Name of the DIRAC system (ie: WorkloadManagement)")) + self.registerArgument(" Service: Name of the DIRAC service (ie: Matcher)", mandatory=False) + _, args = self.parseCommandLine(ignoreErrors=True) system = None service = None url = None diff --git a/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py b/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py index 000cc1e348f..bf27eb137bb 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py +++ b/src/DIRAC/Interfaces/scripts/dirac_framework_self_ping.py @@ -11,10 +11,10 @@ __RCSID__ = "$Id$" - import sys import os import time + from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py b/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py index a8b67b85ba3..84a7299127f 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py +++ b/src/DIRAC/Interfaces/scripts/dirac_repo_monitor.py @@ -1,12 +1,6 @@ #!/usr/bin/env python """ Monitor the jobs present in the repository - -Usage: - dirac-repo-monitor [options] ... RepoDir - -Arguments: - RepoDir: Location of Job Repository """ from __future__ import print_function from __future__ import absolute_import @@ -20,11 +14,8 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=False) - args = self.getPositionalArgs() - - if len(args) != 1: - self.showHelp() + self.registerArgument("RepoDir: Location of Job Repository") + _, args = self.parseCommandLine(ignoreErrors=False) repoLocation = args[0] from DIRAC.Interfaces.API.Dirac import Dirac diff --git a/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py b/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py index 75d9bda83e3..e8704e2a3be 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py +++ b/src/DIRAC/Interfaces/scripts/dirac_utils_file_adler.py @@ -5,12 +5,6 @@ """ Calculate alder32 of the supplied file -Usage: - dirac-utils-file-adler [options] ... File ... - -Arguments: - File: File Name - Example: $ dirac-utils-file-adler Example.tgz Example.tgz 88b4ca8b @@ -26,10 +20,8 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=False) - files = self.getPositionalArgs() - if len(files) == 0: - self.showHelp() + self.registerArgument(["File: File Name"]) + _, files = self.parseCommandLine(ignoreErrors=False) exitCode = 0 diff --git a/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py b/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py index 37f614dfe93..9245287eb27 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py +++ b/src/DIRAC/Interfaces/scripts/dirac_utils_file_md5.py @@ -6,12 +6,6 @@ """ Calculate md5 of the supplied file -Usage: - dirac-utils-file-md5 [options] ... File ... - -Arguments: - File: File Name - Example: $ dirac-utils-file-md5 Example.tgz Example.tgz 5C1A1102-EAFD-2CBA-25BD-0EFCCFC3623E @@ -27,10 +21,8 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=False) - files = self.getPositionalArgs() - if len(files) == 0: - self.showHelp() + self.registerArgument(["File: File Name"]) + _, files = self.parseCommandLine(ignoreErrors=False) exitCode = 0 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 13e10e8c3eb..e40cacdc408 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 @@ -9,12 +9,6 @@ This script was used by the dirac-pilot script to set the CPUTime limit for the matching but now this is no more the case. -Usage: - dirac-wms-get-normalized-queue-length [options] ... Queue ... - -Arguments: - Queue: GlueCEUniqueID of the Queue (ie, juk.nikhef.nl:8443/cream-pbs-lhcb) - Example: $ dirac-wms-get-normalized-queue-length cclcgceli03.in2p3.fr:2119/jobmanager-bqs-long cclcgceli03.in2p3.fr:2119/jobmanager-bqs-long 857400.0 @@ -26,17 +20,14 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.WorkloadManagementSystem.Client.CPUNormalization import queueNormalizedCPU from DIRAC.Core.Utilities.DIRACScript import DIRACScript +from DIRAC.WorkloadManagementSystem.Client.CPUNormalization import queueNormalizedCPU @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp() + self.registerArgument(["Queue: GlueCEUniqueID of the Queue (ie, juk.nikhef.nl:8443/cream-pbs-lhcb)"]) + _, args = self.parseCommandLine(ignoreErrors=True) exitCode = 0 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 67273545a55..02a47cea987 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_get_queue_normalization.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_get_queue_normalization.py @@ -6,12 +6,6 @@ """ Report Normalization Factor applied by Site to the given Queue -Usage: - dirac-wms-get-queue-normalization [options] ... Queue ... - -Arguments: - Queue: GlueCEUniqueID of the Queue (ie, juk.nikhef.nl:8443/cream-pbs-lhcb) - Example: $ dirac-wms-get-queue-normalization cclcgceli03.in2p3.fr:2119/jobmanager-bqs-long cclcgceli03.in2p3.fr:2119/jobmanager-bqs-long 2500.0 @@ -27,11 +21,8 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp() + self.registerArgument(["Queue: GlueCEUniqueID of the Queue (ie, juk.nikhef.nl:8443/cream-pbs-lhcb)"]) + _, args = self.parseCommandLine(ignoreErrors=True) exitCode = 0 diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py index be32a974478..9052787631c 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_attributes.py @@ -6,12 +6,6 @@ """ Retrieve attributes associated with the given DIRAC job -Usage: - dirac-wms-job-attributes [options] ... JobID ... - -Arguments: - JobID: DIRAC Job ID - Example: $ dirac-wms-job-attributes 1 {'AccountedFlag': 'False', @@ -61,11 +55,8 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp() + self.registerArgument(["JobID: DIRAC Job ID"]) + _, args = self.parseCommandLine(ignoreErrors=True) from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py index 1a177f21490..137496960e9 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_delete.py @@ -6,12 +6,6 @@ """ Delete DIRAC job from WMS, if running it will be killed -Usage: - dirac-wms-job-delete [options] ... JobID ... - -Arguments: - JobID: DIRAC Job ID - Example: $ dirac-wms-job-delete 12 Deleted job 12 @@ -31,9 +25,8 @@ def main(self): self.registerSwitch("f:", "File=", "Get output for jobs with IDs from the file") self.registerSwitch("g:", "JobGroup=", "Get output for jobs in the given group") - - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() + self.registerArgument(["JobID: DIRAC Job ID"], mandatory=False) + sws, args = self.parseCommandLine(ignoreErrors=True) import DIRAC from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments @@ -41,7 +34,7 @@ def main(self): dirac = Dirac() jobs = [] - for sw, value in self.getUnprocessedSwitches(): + for sw, value in sws: if sw.lower() in ('f', 'file'): if os.path.exists(value): jFile = open(value) 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 80ef086db00..5672fa26562 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_input.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_input.py @@ -6,12 +6,6 @@ """ Retrieve input sandbox for DIRAC Job -Usage: - dirac-wms-job-get-input [options] ... JobID ... - -Arguments: - JobID: DIRAC Job ID - Example: $ dirac-wms-job-get-input 13 Job input sandbox retrieved in InputSandbox13/ @@ -31,11 +25,8 @@ @DIRACScript() def main(self): self.registerSwitch("D:", "Dir=", "Store the output in this directory") - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp(exitCode=1) + self.registerArgument(["JobID: DIRAC Job ID"]) + sws, args = self.parseCommandLine(ignoreErrors=True) from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments dirac = Dirac() @@ -43,7 +34,7 @@ def main(self): errorList = [] outputDir = None - for sw, v in self.getUnprocessedSwitches(): + for sw, v in sws: if sw in ('D', 'Dir'): outputDir = v 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 926546b35e0..6521361716d 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_jdl.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_jdl.py @@ -46,20 +46,13 @@ def main(self): original = False self.registerSwitch('O', 'Original', 'Gets the original JDL') - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() + self.registerArgument(["JobID: DIRAC Job ID"]) + sws, args = self.parseCommandLine(ignoreErrors=True) - for switch in self.getUnprocessedSwitches(): + for switch in sws: if switch[0] == 'Original' or switch[0] == 'O': original = True - for switch in self.getUnprocessedSwitches(): - if switch[0] == 'Original': - original = True - - if len(args) < 1: - self.showHelp(exitCode=1) - from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments dirac = Dirac() exitCode = 0 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 dddaf681473..b8683d75d79 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_get_output.py @@ -6,12 +6,6 @@ """ Retrieve output sandbox for a DIRAC job -Usage: - dirac-wms-job-get-output [options] ... JobID ... - -Arguments: - JobID: DIRAC Job ID or a name of the file with JobID per line - Example: $ dirac-wms-job-get-output 1 Job output sandbox retrieved in 1/ @@ -34,9 +28,8 @@ def main(self): self.registerSwitch("D:", "Dir=", "Store the output in this directory") self.registerSwitch("f:", "File=", "Get output for jobs with IDs from the file") self.registerSwitch("g:", "JobGroup=", "Get output for jobs in the given group") - - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() + self.registerArgument(["JobID: DIRAC Job ID or a name of the file with JobID per line"], mandatory=False) + sws, args = self.parseCommandLine(ignoreErrors=True) from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments from DIRAC.Core.Utilities.Time import toString, date, day @@ -49,7 +42,7 @@ def main(self): outputDir = None group = None jobs = [] - for sw, value in self.getUnprocessedSwitches(): + for sw, value in sws: if sw in ('D', 'Dir'): outputDir = value elif sw.lower() in ('f', 'file'): 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 5957b340f00..4b299391b19 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 @@ -5,12 +5,6 @@ ######################################################################## """ Retrieve the output data files of a DIRAC job - -Usage: - dirac-wms-job-get-output-data [options] ... JobID ... - -Arguments: - JobID: DIRAC Job ID """ from __future__ import print_function from __future__ import absolute_import @@ -25,11 +19,8 @@ @DIRACScript() def main(self): self.registerSwitch("D:", "Dir=", "Store the output in this directory") - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp(exitCode=1) + self.registerArgument(["JobID: DIRAC Job ID"]) + sws, args = self.parseCommandLine(ignoreErrors=True) from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments dirac = Dirac() @@ -37,7 +28,7 @@ def main(self): errorList = [] outputDir = '' - for sw, v in self.getUnprocessedSwitches(): + for sw, v in sws: if sw in ('D', 'Dir'): outputDir = v diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py index 2f039b87a86..46fbbbc0f5c 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_kill.py @@ -6,12 +6,6 @@ """ Issue a kill signal to a running DIRAC job -Usage: - dirac-wms-job-kill [options] ... JobID ... - -Arguments: - JobID: DIRAC Job ID - Example: $ dirac-wms-job-kill 1918 Killed job 1918 @@ -40,11 +34,8 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp(exitCode=1) + self.registerArgument(["JobID: DIRAC Job ID"]) + _, args = self.parseCommandLine(ignoreErrors=True) from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments 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 c11de42eb9f..1cf0e26ef79 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_logging_info.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_logging_info.py @@ -6,12 +6,6 @@ """ Retrieve history of transitions for a DIRAC job -Usage: - dirac-wms-job-logging-info [options] ... JobID ... - -Arguments: - JobID: DIRAC Job ID - Example: $ dirac-wms-job-logging-info 1 Status MinorStatus ApplicationStatus DateTime @@ -42,11 +36,8 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp(exitCode=1) + self.registerArgument(["JobID: DIRAC Job ID"]) + _, args = self.parseCommandLine(ignoreErrors=True) from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py index e8173944b2f..d86838ad027 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_parameters.py @@ -6,12 +6,6 @@ """ Retrieve parameters associated to the given DIRAC job -Usage: - dirac-wms-job-parameters [options] ... JobID ... - -Arguments: - JobID: DIRAC Job ID - Example: $ dirac-wms-job-parameters 1 {'CPU(MHz)': '1596.479', @@ -52,11 +46,8 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp(exitCode=1) + self.registerArgument(["JobID: DIRAC Job ID"]) + _, args = self.parseCommandLine(ignoreErrors=True) from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py index 533a51e26c2..b553f1e1c47 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_peek.py @@ -6,12 +6,6 @@ """ Peek StdOut of the given DIRAC job -Usage: - dirac-wms-job-delete [options] ... JobID ... - -Arguments: - JobID: DIRAC Job ID - Example: $ dirac-wms-job-peek 1 """ @@ -27,11 +21,8 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp(exitCode=1) + self.registerArgument(["JobID: DIRAC Job ID"]) + _, args = self.parseCommandLine(ignoreErrors=True) from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py index 1051ad78c37..3625a25cb54 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_reschedule.py @@ -6,12 +6,6 @@ """ Reschedule the given DIRAC job -Usage: - dirac-wms-job-reschedule [options] ... JobID ... - -Arguments: - JobID: DIRAC Job ID - Example: $ dirac-wms-job-reschedule 1 Rescheduled job 1 @@ -28,11 +22,8 @@ @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp(exitCode=1) + self.registerArgument(["JobID: DIRAC Job ID"]) + _, args = self.parseCommandLine(ignoreErrors=True) from DIRAC.Interfaces.API.Dirac import Dirac, parseArguments dirac = Dirac() diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py index 8add8251fe2..44e82faba09 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_status.py @@ -6,12 +6,6 @@ """ Retrieve status of the given DIRAC job -Usage: - dirac-wms-job-status [options] ... JobID ... - -Arguments: - JobID: DIRAC Job ID - Example: $ dirac-wms-job-status 2 JobID=2 Status=Done; MinorStatus=Execution Complete; Site=EELA.UTFSM.cl; @@ -30,9 +24,8 @@ def main(self): self.registerSwitch("f:", "File=", "Get status for jobs with IDs from the file") self.registerSwitch("g:", "JobGroup=", "Get status for jobs in the given group") - - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() + self.registerArgument(["JobID: DIRAC Job ID"], mandatory=False) + sws, args = self.parseCommandLine(ignoreErrors=True) from DIRAC import exit as DIRACExit from DIRAC.Core.Utilities.Time import toString, date, day @@ -42,7 +35,7 @@ def main(self): exitCode = 0 jobs = [] - for key, value in self.getUnprocessedSwitches(): + for key, value in sws: if key.lower() in ('f', 'file'): if os.path.exists(value): jFile = open(value) diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py b/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py index a6e9cbd4976..aca1413dd19 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_job_submit.py @@ -6,12 +6,6 @@ """ Submit jobs to DIRAC WMS -Usage: - dirac-wms-job-submit [options] ... JDL ... - -Arguments: - JDL: Path to JDL file - Example: $ dirac-wms-job-submit Simple.jdl JobID = 11 @@ -32,14 +26,11 @@ def main(self): self.registerSwitch("f:", "File=", "Writes job ids to file ") self.registerSwitch("r:", "UseJobRepo=", "Use the job repository") - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp() + self.registerArgument(["JDL: Path to JDL file"]) + sws, args = self.parseCommandLine(ignoreErrors=True) from DIRAC.Interfaces.API.Dirac import Dirac - unprocessed_switches = self.getUnprocessedSwitches() + unprocessed_switches = sws use_repo = False repo_name = "" for sw, value in unprocessed_switches: 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 cec738e08f1..4ba9070c3e4 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 @@ -5,12 +5,6 @@ ######################################################################## """ Retrieve output sandbox for DIRAC Jobs for the given selection and search for a string in their std.out - -Usage: - dirac-wms-jobs-select-output-search [options] ... String ... - -Arguments: - String: string to search for """ from __future__ import print_function from __future__ import absolute_import @@ -35,8 +29,8 @@ def main(self): self.registerSwitch("", "JobGroup=", "Select jobs for specified job group") self.registerSwitch("", "Date=", "Date in YYYY-MM-DD format, if not specified default is today") self.registerSwitch("", "File=", "File name,if not specified default is std.out ") - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() + self.registerArgument("String: string to search for") + _, args = self.parseCommandLine(ignoreErrors=True) # Default values status = None diff --git a/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py b/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py index cbd1ad3f94a..bd38ab13fb7 100755 --- a/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py +++ b/src/DIRAC/Interfaces/scripts/dirac_wms_select_jobs.py @@ -5,12 +5,6 @@ ######################################################################## """ Select DIRAC jobs matching the given conditions - -Usage: - dirac-wms-job-status [options] ... JobID ... - -Arguments: - JobID: DIRAC Job ID """ from __future__ import absolute_import from __future__ import division @@ -36,8 +30,6 @@ def main(self): self.registerSwitch("", "Maximum=", "Maximum number of jobs shown (default %d, 0 means all)" % maxJobs) self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - # Default values status = None minorStatus = None @@ -48,7 +40,7 @@ def main(self): date = None if args: - self.showHelp() + Script.showHelp() exitCode = 0 diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py index 09c242092f9..fbdafd9cfde 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_add_trans.py @@ -2,14 +2,6 @@ """ 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 @@ -24,7 +16,10 @@ @DIRACScript() def main(self): - self.parseCommandLine() + self.registerArgument("prodID: Production ID") + self.registerArgument("transID: Transformation ID") + self.registerArgument("parentTransID: Parent Transformation ID", default='', mandatory=False) + _, args = self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient @@ -33,17 +28,10 @@ def main(self): transClient = TransformationClient() # get arguments - args = self.getPositionalArgs() - if len(args) == 3: - parentTransID = args[2] - elif len(args) == 2: - parentTransID = '' - else: + prodID, transID, parentTransID = self.getPositionalArgs(group=True) + if len(args) > 3: self.showHelp(exitCode=1) - prodID = args[0] - transID = args[1] - res = transClient.getTransformation(transID) if not res['OK']: DIRAC.gLogger.error('Failed to get transformation %s: %s' % (transID, res['Message'])) diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py index fa07f77953d..d59ef6bc9a6 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_clean.py @@ -1,12 +1,6 @@ #!/usr/bin/env python """ Clean a given production - -Usage: - dirac-prod-clean prodID - -Arguments: - prodID: Production ID (mandatory) """ from __future__ import absolute_import from __future__ import division @@ -15,20 +9,16 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): - self.parseCommandLine() + self.registerArgument("prodID: Production ID") + _, args = self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient - args = self.getPositionalArgs() - if len(args) < 1: - self.showHelp(exitCode=1) - # get arguments prodID = args[0] diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py index 782555dc266..9d6d9734d8a 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_delete.py @@ -2,12 +2,6 @@ """ Delete a given production - -Usage: - dirac-prod-delete prodID - -Arguments: - prodID: Production ID (mandatory) """ from __future__ import absolute_import from __future__ import division @@ -16,20 +10,16 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): - self.parseCommandLine() + self.registerArgument("prodID: Production ID") + _, args = self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient - args = self.getPositionalArgs() - if len(args) < 1: - self.showHelp(exitCode=1) - # get arguments prodID = args[0] diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py index 79efc0f8da4..7e838b530ae 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get.py @@ -2,12 +2,6 @@ """ Get informations for a given production -Usage: - dirac-prod-get prodID - -Arguments: - prodID: Production ID (mandatory) - Example: $ dirac-prod-get 381 """ @@ -18,13 +12,13 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): - self.parseCommandLine() + self.registerArgument("prodID: Production ID") + _, args = self.parseCommandLine() from DIRAC.Core.Utilities.PrettyPrint import printTable from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient @@ -32,12 +26,8 @@ def main(self): prodClient = ProductionClient() # get arguments - args = self.getPositionalArgs() - if len(args) < 1: - self.showHelp(exitCode=1) - else: - prodID = args[0] - res = prodClient.getProduction(prodID) + prodID = args[0] + res = prodClient.getProduction(prodID) fields = [ 'ProductionName', diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py index 48aa09ef32b..f0631812de5 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_all.py @@ -1,9 +1,6 @@ #!/usr/bin/env python """ Get summary informations of all productions - -Usage: - dirac-prod-get-all """ from __future__ import absolute_import from __future__ import division @@ -12,7 +9,6 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.PrettyPrint import printTable from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py index 442b70d4e5d..b883fff7955 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_description.py @@ -2,41 +2,31 @@ """ 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 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 @DIRACScript() def main(self): - self.parseCommandLine() + self.registerArgument("prodID: Production ID") + _, args = self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient prodClient = ProductionClient() # get arguments - args = self.getPositionalArgs() - if len(args) < 1: - self.showHelp(exitCode=1) - else: - prodID = args[0] - res = prodClient.getProduction(prodID) + prodID = args[0] + res = prodClient.getProduction(prodID) if res['OK']: prod = res['Value'] diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py index 72b33bc08da..cb9cc347d97 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_get_trans.py @@ -2,12 +2,6 @@ """ 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 """ @@ -18,22 +12,18 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.PrettyPrint import printTable from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): - self.parseCommandLine() + self.registerArgument("prodID: Production ID") + _, args = self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient - args = self.getPositionalArgs() - if len(args) < 1: - self.showHelp(exitCode=1) - # get arguments prodID = args[0] diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py index d9b4a48f34f..8feb601d1e9 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_start.py @@ -2,12 +2,6 @@ """ Start a given production -Usage: - dirac-prod-start prodID - -Arguments: - prodID: Production ID (mandatory) - Example: $ dirac-prod-start 381 """ @@ -18,20 +12,16 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): - self.parseCommandLine() + self.registerArgument("prodID: Production ID") + _, args = self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient - args = self.getPositionalArgs() - if len(args) < 1: - self.showHelp(exitCode=1) - # get arguments prodID = args[0] diff --git a/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py b/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py index b51b06c2b27..202c7f11621 100755 --- a/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py +++ b/src/DIRAC/ProductionSystem/scripts/dirac_prod_stop.py @@ -2,12 +2,6 @@ """ Stop a given production -Usage: - dirac-prod-stop prodID - -Arguments: - prodID: Production ID (mandatory) - Example: $ dirac-prod-stop 381 """ @@ -24,14 +18,11 @@ @DIRACScript() def main(self): - self.parseCommandLine() + self.registerArgument("prodID: Production ID") + _, args = self.parseCommandLine() from DIRAC.ProductionSystem.Client.ProductionClient import ProductionClient - args = self.getPositionalArgs() - if len(args) < 1: - self.showHelp(exitCode=1) - # get arguments prodID = args[0] 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 ddd541cac3d..6f3e95003a1 100755 --- a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_list_req_cache.py +++ b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_list_req_cache.py @@ -1,9 +1,6 @@ #!/bin/env python """ List the number of requests in the caches of all the ReqProxyies - -Usage: - dirac-rms-list-req-cache [options] """ from __future__ import absolute_import from __future__ import division @@ -12,15 +9,13 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): self.registerSwitch('', 'Full', ' Print full list of requests') - from DIRAC.Core.Base.Script import parseCommandLine - parseCommandLine() + self.parseCommandLine() from DIRAC.RequestManagementSystem.Client.ReqClient import ReqClient fullPrint = False diff --git a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py index deb62c3a4ee..beb9d9caf3d 100755 --- a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py +++ b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_reqdb_summary.py @@ -1,9 +1,6 @@ #!/bin/env python """ Show ReqDB summary - -Usage: - dirac-rms-reqdb-summary [options] """ from __future__ import absolute_import from __future__ import division @@ -11,14 +8,12 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): - from DIRAC.Core.Base.Script import parseCommandLine - parseCommandLine() + self.parseCommandLine() import DIRAC diff --git a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py index eb3c8be45e7..3fa2231dd00 100755 --- a/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py +++ b/src/DIRAC/RequestManagementSystem/scripts/dirac_rms_request.py @@ -1,13 +1,6 @@ #!/bin/env python """ Show request given its ID, a jobID or a transformation and a task - -Usage: - dirac-rms-request [options] [request[,request1,...]| - -Arguments: - request: a request ID or a unique request name - : a file containing a list of requests (Comma-separated on each line) """ from __future__ import absolute_import from __future__ import division @@ -17,6 +10,7 @@ import datetime import os + from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -37,7 +31,6 @@ def convertDate(date): @DIRACScript() def main(self): - from DIRAC.Core.Base import Script self.registerSwitch('', 'Job=', ' JobID[,jobID2,...]') self.registerSwitch('', 'Transformation=', ' transformation ID') self.registerSwitch('', 'Tasks=', ' Associated to --Transformation, list of taskIDs') @@ -56,8 +49,10 @@ def main(self): self.registerSwitch('', 'Cancel', ' Cancel the request') self.registerSwitch('', 'ListJobs', ' List the corresponding jobs') self.registerSwitch('', 'TargetSE=', ' Select request only if that SE is in the targetSEs') - from DIRAC.Core.Base.Script import parseCommandLine - parseCommandLine() + self.registerArgument(("file: a file containing a list of requests (Comma-separated on each line)", + "request: a request ID or a unique request name"), mandatory=False) + self.registerArgument(["request: a request ID or a unique request name"], mandatory=False) + self.parseCommandLine() import DIRAC from DIRAC import gLogger diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py index 101e2e4bdb4..f9f27cba3b7 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_list_status.py @@ -2,22 +2,15 @@ """ Script that dumps the DB information for the elements into the standard output. If returns information concerning the StatusType and Status attributes. - -Usage: - dirac-rss-list-status [options] - -Verbosity:: - - -o LogLevel=LEVEL NOTICE by default, levels available: INFO, DEBUG, VERBOSE.. """ from __future__ import absolute_import from __future__ import division from __future__ import print_function +__RCSID__ = '$Id$' + from DIRAC import gLogger, exit as DIRACExit, version -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript -from DIRAC.ResourceStatusSystem.Client import ResourceStatusClient from DIRAC.Core.Utilities.PrettyPrint import printTable __RCSID__ = '$Id$' @@ -157,19 +150,144 @@ def run(): tabularPrint(elements) -@DIRACScript() +class ResourceGetParameters(DIRACScript): + + def initParameters(self): + self.subLogger = gLogger.getSubLogger(__file__) + self.switchDict = {} + + def registerSwitches(self): + """ + Registers all switches that can be used while calling the script from the + command line interface. + """ + + switches = ( + ('element=', 'Element family to be Synchronized ( Site, Resource or Node )'), + ('elementType=', 'ElementType narrows the search; None if default'), + ('name=', 'ElementName; None if default'), + ('tokenOwner=', 'Owner of the token; None if default'), + ('statusType=', 'StatusType; None if default'), + ('status=', 'Status; None if default'), + ) + + for switch in switches: + self.registerSwitch('', switch[0], switch[1]) + + def registerUsageMessage(self): + """ + Takes the script __doc__ and adds the DIRAC version to it + """ + usageMessage = ' DIRAC %s\n' % version + usageMessage += __doc__ + + self.setUsageMessage(usageMessage) + + def parseSwitches(self): + """ + Parses the arguments passed by the user + """ + + switches, args = self.parseCommandLine(ignoreErrors=True) + if args: + self.subLogger.error("Found the following positional args '%s', but we only accept switches" % args) + self.subLogger.error("Please, check documentation below") + self.showHelp(exitCode=1) + + switches = dict(switches) + # Default values + switches.setdefault('elementType', None) + switches.setdefault('name', None) + switches.setdefault('tokenOwner', None) + switches.setdefault('statusType', None) + switches.setdefault('status', None) + + if 'element' not in switches: + self.subLogger.error("element Switch missing") + self.subLogger.error("Please, check documentation below") + self.showHelp(exitCode=1) + + if not switches['element'] in ('Site', 'Resource', 'Node'): + self.subLogger.error("Found %s as element switch" % switches['element']) + self.subLogger.error("Please, check documentation below") + self.showHelp(exitCode=1) + + self.subLogger.debug("The switches used are:") + map(self.subLogger.debug, switches.items()) + + def getElements(self): + """ + Given the switches, gets a list of elements with their respective statustype + and status attributes. + """ + + rssClient = ResourceStatusClient.ResourceStatusClient() + + meta = {'columns': []} + for key in ('Name', 'StatusType', 'Status', 'ElementType', 'TokenOwner'): + # Transforms from upper lower case to lower upper case + if self.switchDict[key[0].lower() + key[1:]] is None: + meta['columns'].append(key) + + elements = rssClient.selectStatusElement( + self.switchDict['element'], 'Status', + name=self.switchDict['name'].split(',') if self.switchDict['name'] else None, + statusType=self.switchDict['statusType'].split(',') if self.switchDict['statusType'] else None, + status=self.switchDict['status'].split(',') if self.switchDict['status'] else None, + elementType=self.switchDict['elementType'].split(',') if self.switchDict['elementType'] else None, + tokenOwner=self.switchDict['tokenOwner'].split(',') if self.switchDict['tokenOwner'] else None, + meta=meta) + + return elements + + + def tabularPrint(self, elementsList): + """ + Prints the list of elements on a tabular + """ + + self.subLogger.notice('') + self.subLogger.notice('Selection parameters:') + self.subLogger.notice(' %s: %s' % ('element'.ljust(15), self.switchDict['element'])) + titles = [] + for key in ('Name', 'StatusType', 'Status', 'ElementType', 'TokenOwner'): + + # Transforms from upper lower case to lower upper case + keyT = key[0].lower() + key[1:] + + if self.switchDict[keyT] is None: + titles.append(key) + else: + self.subLogger.notice(' %s: %s' % (key.ljust(15), self.switchDict[keyT])) + self.subLogger.notice('') + + self.subLogger.notice(printTable(titles, elementsList, printOut=False, + numbering=False, columnSeparator=' | ')) + + + def run(self): + """ + Main function of the script + """ + + elements = self.getElements() + if not elements['OK']: + self.subLogger.error(elements) + DIRACExit(1) + elements = elements['Value'] + + self.tabularPrint(elements) + + +@ResourceGetParameters() def main(self): - global subLogger - global switchDict - subLogger = gLogger.getSubLogger(__file__) - # Script initialization - registerSwitches(self) - registerUsageMessage(self) - switchDict = parseSwitches(self) + self.registerSwitches() + self.registerUsageMessage() + self.parseSwitches() # Run script - run() + self.run() # Bye DIRACExit(0) diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py index 470ad2ec44d..2c3d62e7718 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_db.py @@ -2,18 +2,6 @@ """ Script that dumps the DB information for the elements into the standard output. If returns information concerning the StatusType and Status attributes. - -Usage: - dirac-rss-query-db [option] - -Arguments: - Queries: [select|add|modify|delete] - Elements: [site|resource|component|node] - TableTypes: [status|log|history] - -Verbosity:: - - -o LogLevel=LEVEL NOTICE by default, levels available: INFO, DEBUG, VERBOSE.. """ from __future__ import absolute_import from __future__ import division @@ -22,14 +10,14 @@ __RCSID__ = '$Id$' import datetime + from DIRAC import gLogger, exit as DIRACExit, S_OK, version -from DIRAC.Core.Base import Script +from DIRAC.Core.Utilities import Time +from DIRAC.Core.Utilities.PrettyPrint import printTable from DIRAC.Core.Utilities.DIRACScript import DIRACScript +from DIRAC.Core.Security.ProxyInfo import getProxyInfo from DIRAC.ResourceStatusSystem.Client import ResourceStatusClient from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations -from DIRAC.Core.Security.ProxyInfo import getProxyInfo -from DIRAC.Core.Utilities import Time -from DIRAC.Core.Utilities.PrettyPrint import printTable subLogger = None @@ -278,7 +266,7 @@ def error(self, msg): self.subLogger.error("\nERROR:") self.subLogger.error("\t" + msg) self.subLogger.error("\tPlease, check documentation below") - self.__script.showHelp(exitCode=1) + self.showHelp(exitCode=1) def confirm(self, query, matches): """ @@ -584,19 +572,18 @@ def run(args, switchDictSet): self.confirm(query, matches) -@DIRACScript() +@RSSQueryDB() def main(self): - params = Params(self) # Script initialization - params.registerSwitches() - params.registerUsageMessage() - args, switchDict = params.parseSwitches() + self.registerSwitches() + self.registerUsageMessage() + args, switchDict = self.parseSwitches() # Unpack switchDict if 'name' or 'statusType' have multiple values - switchDictSet = params.unpack(switchDict) + switchDictSet = self.unpack(switchDict) # Run script - params.run(args, switchDictSet) + self.run(args, switchDictSet) # Bye DIRACExit(0) diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py index 8391b2c0e9a..51eb934b8b3 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_query_dtcache.py @@ -1,17 +1,6 @@ #!/usr/bin/env python """ Select/Add/Delete a new DownTime entry for a given Site or Service. - -Usage: - dirac-rss-query-dtcache [option] - -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 @@ -22,17 +11,15 @@ import datetime from DIRAC import gLogger, exit as DIRACExit, version -from DIRAC.Core.Base import Script -from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Utilities import Time +from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Utilities.PrettyPrint import printTable from DIRAC.ResourceStatusSystem.Utilities import Utils -class Params(object): +class RSSQueryDtcache(DIRACScript): - def __init__(self, script): - self.__script = script + def initParameters(self): self.subLogger = gLogger.getSubLogger(__file__) self.ResourceManagementClient = getattr( Utils.voimport('DIRAC.ResourceStatusSystem.Client.ResourceManagementClient'), @@ -58,7 +45,9 @@ def registerSwitches(self): ) for switch in switches: - self.__script.registerSwitch('', switch[0], switch[1]) + self.registerSwitch('', switch[0], switch[1]) + + self.registerArgument("Query: queries", values=['select', 'add', 'delete']) def registerUsageMessage(self): """ @@ -68,23 +57,17 @@ def registerUsageMessage(self): usageMessage = 'DIRAC version: %s \n' % version usageMessage += __doc__ - self.__script.setUsageMessage(usageMessage) + self.setUsageMessage(usageMessage) def parseSwitches(self): """ Parses the arguments passed by the user """ - self.__script.parseCommandLine(ignoreErrors=True) - args = self.__script.getPositionalArgs() - if not args: - self.error("Missing mandatory 'query' argument") - elif not args[0].lower() in ('select', 'add', 'delete'): - self.error("Missing mandatory argument") - else: - query = args[0].lower() + switches, args = self.parseCommandLine(ignoreErrors=True) + query = args[0].lower() - switches = dict(self.__script.getUnprocessedSwitches()) + switches = dict(switches) # Default values switches.setdefault('downtimeID', None) @@ -196,7 +179,7 @@ def error(self, msg): self.subLogger.error("\nERROR:") self.subLogger.error("\t" + msg) self.subLogger.error("\tPlease, check documentation below") - self.__script.showHelp(exitCode=1) + self.showHelp(exitCode=1) def confirm(self, query, matches): """ @@ -332,16 +315,15 @@ def run(self, args, switchDict): self.error(result['Message']) -@DIRACScript() +@RSSQueryDtcache() def main(self): - params = Params(self) # Script initialization - params.registerSwitches() - params.registerUsageMessage() - args, switchDict = params.parseSwitches() + self.registerSwitches() + self.registerUsageMessage() + args, switchDict = self.parseSwitches() # Run script - params.run(args, switchDict) + self.run(args, switchDict) # Bye DIRACExit(0) diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_status.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_status.py index 64090db79ef..b634d13a69d 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_status.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_status.py @@ -13,7 +13,6 @@ from datetime import datetime, timedelta from DIRAC import gLogger, exit as DIRACExit, S_OK, version -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Security.ProxyInfo import getProxyInfo from DIRAC.ResourceStatusSystem.Client import ResourceStatusClient @@ -21,15 +20,13 @@ from DIRAC.ConfigurationSystem.Client.Helpers.Operations import Operations -subLogger = None +class RSSSetStatus(DIRACScript): + def initParameters(self): + self.subLogger = gLogger.getSubLogger(__file__) -def registerSwitches(self): - ''' - Registers all switches that can be used while calling the script from the - command line interface. - ''' +<<<<<<< HEAD switches = ( ('element=', 'Element family to be Synchronized ( Site, Resource or Node )'), ('name=', 'Name (or comma-separeted list of names) of the element where the change applies'), @@ -39,33 +36,42 @@ def registerSwitches(self): ('VO=', 'VO to change a status for. Default: "all" ' 'VO=all sets the status for all VOs not explicitly listed in the RSS'), ) - - for switch in switches: - self.registerSwitch('', switch[0], switch[1]) - - -def registerUsageMessage(self): - ''' - Takes the script __doc__ and adds the DIRAC version to it - ''' - usageMessage = ' DIRAC %s\n' % version - usageMessage += __doc__ - - self.setUsageMessage(usageMessage) - - -def parseSwitches(self): - ''' - Parses the arguments passed by the user - ''' - - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - if args: - subLogger.error("Found the following positional args '%s', but we only accept switches" % args) - subLogger.error("Please, check documentation below") - self.showHelp(exitCode=1) - +======= + def registerSwitches(self): + ''' + Registers all switches that can be used while calling the script from the + command line interface. + ''' +>>>>>>> 2411a4e56 (merge #5024) + + switches = ( + ('element=', 'Element family to be Synchronized ( Site, Resource or Node )'), + ('name=', 'Name (or comma-separeted list of names) of the element where the change applies'), + ('statusType=', 'StatusType (or comma-separeted list of names), if none applies to all possible statusTypes'), + ('status=', 'Status to be changed'), + ('reason=', 'Reason to set the Status'), + ) + + for switch in switches: + self.registerSwitch('', switch[0], switch[1]) + + + def registerUsageMessage(self): + ''' + Takes the script __doc__ and adds the DIRAC version to it + ''' + usageMessage = ' DIRAC %s\n' % version + usageMessage += __doc__ + + self.setUsageMessage(usageMessage) + + + def parseSwitches(self): + ''' + Parses the arguments passed by the user + ''' + +<<<<<<< HEAD switches = dict(self.getUnprocessedSwitches()) switches.setdefault('statusType', None) switches.setdefault('VO', 'all') @@ -75,136 +81,177 @@ def parseSwitches(self): if key not in switches: subLogger.error("%s Switch missing" % key) subLogger.error("Please, check documentation below") +======= + switches, args = self.parseCommandLine(ignoreErrors=True) + if args: + self.subLogger.error("Found the following positional args '%s', but we only accept switches" % args) + self.subLogger.error("Please, check documentation below") +>>>>>>> 2411a4e56 (merge #5024) self.showHelp(exitCode=1) - if not switches['element'] in ('Site', 'Resource', 'Node'): - subLogger.error("Found %s as element switch" % switches['element']) - subLogger.error("Please, check documentation below") - self.showHelp(exitCode=1) - - statuses = StateMachine.RSSMachine(None).getStates() - - if not switches['status'] in statuses: - subLogger.error("Found %s as element switch" % switches['element']) - subLogger.error("Please, check documentation below") - self.showHelp(exitCode=1) + switches = dict(switches) + switches.setdefault('statusType', None) - subLogger.debug("The switches used are:") - map(subLogger.debug, switches.items()) + for key in ('element', 'name', 'status', 'reason'): - return switches + if key not in switches: + self.subLogger.error("%s Switch missing" % key) + self.subLogger.error("Please, check documentation below") + self.showHelp(exitCode=1) + if not switches['element'] in ('Site', 'Resource', 'Node'): + self.subLogger.error("Found %s as element switch" % switches['element']) + self.subLogger.error("Please, check documentation below") + self.showHelp(exitCode=1) -def checkStatusTypes(statusTypes): - ''' - To check if values for 'statusType' are valid - ''' - - opsH = Operations().getValue('ResourceStatus/Config/StatusTypes/StorageElement') - acceptableStatusTypes = opsH.replace(',', '').split() - - for statusType in statusTypes: - if statusType not in acceptableStatusTypes and statusType != 'all': - acceptableStatusTypes.append('all') - subLogger.error("'%s' is a wrong value for switch 'statusType'.\n\tThe acceptable values are:\n\t%s" - % (statusType, str(acceptableStatusTypes))) + statuses = StateMachine.RSSMachine(None).getStates() - if 'all' in statusType: - return acceptableStatusTypes - return statusTypes + if not switches['status'] in statuses: + self.subLogger.error("Found %s as element switch" % switches['element']) + self.subLogger.error("Please, check documentation below") + self.showHelp(exitCode=1) + self.subLogger.debug("The switches used are:") + map(self.subLogger.debug, switches.items()) -def unpack(switchDict): - ''' - To split and process comma-separated list of values for 'name' and 'statusType' - ''' + return switches - switchDictSet = [] - names = [] - statusTypes = [] +<<<<<<< HEAD if switchDict['name'] is not None: names = list(filter(None, switchDict['name'].split(','))) if switchDict['statusType'] is not None: statusTypes = list(filter(None, switchDict['statusType'].split(','))) statusTypes = checkStatusTypes(statusTypes) +======= + def checkStatusTypes(self, statusTypes): + ''' + To check if values for 'statusType' are valid + ''' + + opsH = Operations().getValue('ResourceStatus/Config/StatusTypes/StorageElement') + acceptableStatusTypes = opsH.replace(',', '').split() +>>>>>>> 2411a4e56 (merge #5024) - if len(names) > 0 and len(statusTypes) > 0: - combinations = [(a, b) for a in names for b in statusTypes] - for combination in combinations: - n, s = combination - switchDictClone = switchDict.copy() - switchDictClone['name'] = n - switchDictClone['statusType'] = s - switchDictSet.append(switchDictClone) - elif len(names) > 0 and len(statusTypes) == 0: - for name in names: - switchDictClone = switchDict.copy() - switchDictClone['name'] = name - switchDictSet.append(switchDictClone) - elif len(names) == 0 and len(statusTypes) > 0: for statusType in statusTypes: + if statusType not in acceptableStatusTypes and statusType != 'all': + acceptableStatusTypes.append('all') + self.subLogger.error("'%s' is a wrong value for switch 'statusType'.\n\tThe acceptable values are:\n\t%s" + % (statusType, str(acceptableStatusTypes))) + + if 'all' in statusType: + return acceptableStatusTypes + return statusTypes + + + def unpack(self, switchDict): + ''' + To split and process comma-separated list of values for 'name' and 'statusType' + ''' + + switchDictSet = [] + names = [] + statusTypes = [] + + if switchDict['name'] is not None: + names = filter(None, switchDict['name'].split(',')) + + if switchDict['statusType'] is not None: + statusTypes = filter(None, switchDict['statusType'].split(',')) + statusTypes = self.checkStatusTypes(statusTypes) + + if len(names) > 0 and len(statusTypes) > 0: + combinations = [(a, b) for a in names for b in statusTypes] + for combination in combinations: + n, s = combination + switchDictClone = switchDict.copy() + switchDictClone['name'] = n + switchDictClone['statusType'] = s + switchDictSet.append(switchDictClone) + elif len(names) > 0 and len(statusTypes) == 0: + for name in names: + switchDictClone = switchDict.copy() + switchDictClone['name'] = name + switchDictSet.append(switchDictClone) + elif len(names) == 0 and len(statusTypes) > 0: + for statusType in statusTypes: + switchDictClone = switchDict.copy() + switchDictClone['statusType'] = statusType + switchDictSet.append(switchDictClone) + elif len(names) == 0 and len(statusTypes) == 0: switchDictClone = switchDict.copy() - switchDictClone['statusType'] = statusType + switchDictClone['name'] = None + switchDictClone['statusType'] = None switchDictSet.append(switchDictClone) - elif len(names) == 0 and len(statusTypes) == 0: - switchDictClone = switchDict.copy() - switchDictClone['name'] = None - switchDictClone['statusType'] = None - switchDictSet.append(switchDictClone) - return switchDictSet + return switchDictSet -def getTokenOwner(): - ''' - Function that gets the userName from the proxy - ''' - proxyInfo = getProxyInfo() - if not proxyInfo['OK']: - return proxyInfo + def getTokenOwner(self): + ''' + Function that gets the userName from the proxy + ''' + proxyInfo = getProxyInfo() + if not proxyInfo['OK']: + return proxyInfo - userName = proxyInfo['Value']['username'] - return S_OK(userName) + userName = proxyInfo['Value']['username'] + return S_OK(userName) -def setStatus(switchDict, tokenOwner): - ''' - Function that gets the user token, sets the validity for it. Gets the elements - in the database for a given name and statusType(s). Then updates the status - of all them adding a reason and the token. - ''' + def setStatus(self, switchDict, tokenOwner): + ''' + Function that gets the user token, sets the validity for it. Gets the elements + in the database for a given name and statusType(s). Then updates the status + of all them adding a reason and the token. + ''' - rssClient = ResourceStatusClient.ResourceStatusClient() + rssClient = ResourceStatusClient.ResourceStatusClient() +<<<<<<< HEAD elements = rssClient.selectStatusElement(switchDict['element'], 'Status', name=switchDict['name'], statusType=switchDict['statusType'], vO=switchDict['VO'], meta={'columns': ['Status', 'StatusType']}) - - if not elements['OK']: - return elements - elements = elements['Value'] - +======= + elements = rssClient.selectStatusElement(switchDict['element'], 'Status', + name=switchDict['name'], + statusType=switchDict['statusType'], + meta={'columns': ['Status', 'StatusType']}) +>>>>>>> 2411a4e56 (merge #5024) + + if not elements['OK']: + return elements + elements = elements['Value'] + +<<<<<<< HEAD if not elements: subLogger.warn('Nothing found for %s, %s, %s %s' % (switchDict['element'], switchDict['name'], switchDict['VO'], switchDict['statusType'])) return S_OK() +======= + if not elements: + self.subLogger.warn('Nothing found for %s, %s, %s' % (switchDict['element'], + switchDict['name'], + switchDict['statusType'])) + return S_OK() +>>>>>>> 2411a4e56 (merge #5024) - tomorrow = datetime.utcnow().replace(microsecond=0) + timedelta(days=1) + tomorrow = datetime.utcnow().replace(microsecond=0) + timedelta(days=1) - for status, statusType in elements: + for status, statusType in elements: - subLogger.debug('%s %s' % (status, statusType)) + self.subLogger.debug('%s %s' % (status, statusType)) - if switchDict['status'] == status: - subLogger.notice('Status for %s (%s) is already %s. Ignoring..' % (switchDict['name'], statusType, status)) - continue + if switchDict['status'] == status: + self.subLogger.notice('Status for %s (%s) is already %s. Ignoring..' % (switchDict['name'], statusType, status)) + continue +<<<<<<< HEAD subLogger.debug('About to set status %s -> %s for %s, statusType: %s, VO: %s, reason: %s' % (status, switchDict['status'], switchDict['name'], statusType, switchDict['VO'], switchDict['reason'])) @@ -218,45 +265,51 @@ def setStatus(switchDict, tokenOwner): tokenExpiration=tomorrow) if not result['OK']: return result +======= + result = rssClient.modifyStatusElement(switchDict['element'], 'Status', + name=switchDict['name'], + statusType=statusType, + status=switchDict['status'], + reason=switchDict['reason'], + tokenOwner=tokenOwner, + tokenExpiration=tomorrow) + if not result['OK']: + return result +>>>>>>> 2411a4e56 (merge #5024) - return S_OK() + return S_OK() -def run(switchDict): - ''' - Main function of the script - ''' + def run(self, switchDict): + ''' + Main function of the script + ''' - tokenOwner = getTokenOwner() - if not tokenOwner['OK']: - subLogger.error(tokenOwner['Message']) - DIRACExit(1) - tokenOwner = tokenOwner['Value'] + tokenOwner = self.getTokenOwner() + if not tokenOwner['OK']: + self.subLogger.error(tokenOwner['Message']) + DIRACExit(1) + tokenOwner = tokenOwner['Value'] - subLogger.notice('TokenOwner is %s' % tokenOwner) + self.subLogger.notice('TokenOwner is %s' % tokenOwner) - result = setStatus(switchDict, tokenOwner) - if not result['OK']: - subLogger.error(result['Message']) - DIRACExit(1) + result = self.setStatus(switchDict, tokenOwner) + if not result['OK']: + self.subLogger.error(result['Message']) + DIRACExit(1) -@DIRACScript() +@RSSSetStatus() def main(self): - global subLogger - global registerUsageMessage - - subLogger = gLogger.getSubLogger(__file__) - # Script initialization - registerSwitches(self) - registerUsageMessage(self) - switchDict = parseSwitches(self) - switchDictSets = unpack(switchDict) + self.registerSwitches() + self.registerUsageMessage() + switchDict = self.parseSwitches() + switchDictSets = self.unpack(switchDict) # Run script for switchDict in switchDictSets: - run(switchDict) + self.run(switchDict) # Bye DIRACExit(0) diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py index c2bd96e7add..1cf1cb4e768 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_set_token.py @@ -6,9 +6,6 @@ If the releaseToken switch is used, no matter what was the previous token, it will be set to rs_svc (RSS owns it). 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: - dirac-rss-token --element=[Site|Resource] --name=[name] --reason=[some reason] """ from __future__ import absolute_import from __future__ import division @@ -20,21 +17,17 @@ # DIRAC from DIRAC import gLogger, exit as DIRACExit, S_OK, version -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.Core.Security.ProxyInfo import getProxyInfo from DIRAC.ResourceStatusSystem.Client.ResourceStatusClient import ResourceStatusClient -subLogger = None -switchDict = {} +class RSSSetToken(DIRACScript): + def initParameters(self): + self.subLogger = gLogger.getSubLogger(__file__) + self.switchDict = {} -def registerSwitches(self): - """ - Registers all switches that can be used while calling the script from the - command line interface. - """ switches = ( ('element=', 'Element family to be Synchronized ( Site, Resource or Node )'), @@ -46,25 +39,29 @@ def registerSwitches(self): ('VO=', 'VO to set a token for (obligatory)') ) - for switch in switches: - self.registerSwitch('', switch[0], switch[1]) + switches = ( + ('element=', 'Element family to be Synchronized ( Site, Resource or Node )'), + ('name=', 'Name, name of the element where the change applies'), + ('statusType=', 'StatusType, if none applies to all possible statusTypes'), + ('reason=', 'Reason to set the Status'), + ('days=', 'Number of days the token is acquired'), + ('releaseToken', 'Release the token and let the RSS take control'), + ) + for switch in switches: + self.registerSwitch('', switch[0], switch[1]) -def registerUsageMessage(self): - """ - Takes the script __doc__ and adds the DIRAC version to it - """ - usageMessage = ' DIRAC %s\n' % version - usageMessage += __doc__ + def registerUsageMessage(self): + """ + Takes the script __doc__ and adds the DIRAC version to it + """ - self.setUsageMessage(usageMessage) + usageMessage = ' DIRAC %s\n' % version + usageMessage += __doc__ + self.setUsageMessage(usageMessage) -def parseSwitches(self): - """ - Parses the arguments passed by the user - """ self.parseCommandLine(ignoreErrors=True) args = self.getPositionalArgs() @@ -88,21 +85,20 @@ def parseSwitches(self): subLogger.error("Please, check documentation above") self.showHelp(exitCode=1) - if not switches['element'] in ('Site', 'Resource', 'Node'): - subLogger.error("Found %s as element switch" % switches['element']) - subLogger.error("Please, check documentation above") - self.showHelp(exitCode=1) + subLogger.debug("The switches used are:") + map(subLogger.debug, switches.items()) - subLogger.debug("The switches used are:") - map(subLogger.debug, switches.items()) + return switches - return switches + def proxyUser(self): + """ + Read proxy to get username. + """ -def proxyUser(): - """ - Read proxy to get username. - """ + res = getProxyInfo() + if not res['OK']: + return res res = getProxyInfo() if not res['OK']: @@ -178,31 +174,72 @@ def setToken(user): subLogger.info('name:%s, VO:%s statusType:%s %s' % (switchDict['name'], switchDict['VO'], statusType, msg)) return S_OK() + if not elements['OK']: + return elements + elements = elements['Value'] + + # If there list is empty they do not exist on the DB ! + if not elements: + subLogger.warn('Nothing found for %s, %s, %s' % (self.switchDict['element'], + self.switchDict['name'], + self.switchDict['statusType'])) + return S_OK() + + # If we want to release the token + if self.switchDict['releaseToken']: + tokenExpiration = datetime.max + newTokenOwner = 'rs_svc' + else: + tokenExpiration = datetime.utcnow().replace(microsecond=0) + timedelta(days=int(self.switchDict['days'])) + newTokenOwner = user + + subLogger.always('New token: %s --- until %s' % (newTokenOwner, tokenExpiration)) + + for statusType, tokenOwner in elements: + + # If a user different than the one issuing the command and RSS + if tokenOwner != user and tokenOwner != 'rs_svc': + subLogger.info('%s(%s) belongs to the user: %s' % (self.switchDict['name'], statusType, tokenOwner)) + + # does the job + result = rssClient.modifyStatusElement(self.switchDict['element'], 'Status', + name=self.switchDict['name'], + statusType=statusType, + reason=self.switchDict['reason'], + tokenOwner=newTokenOwner, + tokenExpiration=tokenExpiration) + if not result['OK']: + return result + + if tokenOwner == newTokenOwner: + msg = '(extended)' + elif newTokenOwner == 'rs_svc': + msg = '(released)' + else: + msg = '(aquired from %s)' % tokenOwner + + subLogger.info('%s:%s %s' % (self.switchDict['name'], statusType, msg)) + return S_OK() -@DIRACScript() + +@RSSSetToken() def main(self): """ Main function of the script. Gets the username from the proxy loaded and sets the token taking into account that user and the switchDict parameters. """ - global subLogger - global switchDict - - # Logger initialization - subLogger = gLogger.getSubLogger(__file__) - # Script initialization - registerSwitches(self) - registerUsageMessage(self) - switchDict = parseSwitches(self) + self.registerSwitches() + self.registerUsageMessage() + self.switchDict = self.parseSwitches() - user = proxyUser() + user = self.proxyUser() if not user['OK']: subLogger.error(user['Message']) DIRACExit(1) user = user['Value'] - res = setToken(user) + res = self.setToken(user) if not res['OK']: subLogger.error(res['Message']) DIRACExit(1) diff --git a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py index 4efd41d6c1c..eba6c8d9c19 100755 --- a/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py +++ b/src/DIRAC/ResourceStatusSystem/scripts/dirac_rss_sync.py @@ -5,13 +5,6 @@ reason to `Synchronized`. However, it can copy over the status on the CS to the RSS. Important: If the StatusType is not defined on the CS, it will set it to Banned ! - -Usage: - dirac-rss-sync [options] - -Verbosity:: - - -o LogLevel=LEVEL NOTICE by default, levels available: INFO, DEBUG, VERBOSE.. """ from __future__ import absolute_import from __future__ import division @@ -20,251 +13,246 @@ __RCSID__ = '$Id$' from DIRAC import version, gLogger, exit as DIRACExit, S_OK -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript -subLogger = None -switchDict = {} -DEFAULT_STATUS = "" +class RSSSync(DIRACScript): -def registerSwitches(self): - ''' - Registers all switches that can be used while calling the script from the - command line interface. - ''' + def initParameters(self): + self.subLogger = gLogger.getSubLogger(__file__) + self.switchDict = {} + self.DEFAULT_STATUS = "" - self.registerSwitch('', 'init', 'Initialize the element to the status in the CS ( applicable for StorageElements )') - self.registerSwitch('', 'element=', 'Element family to be Synchronized ( Site, Resource or Node ) or `all`') - self.registerSwitch('', 'defaultStatus=', 'Default element status if not given in the CS') + def registerSwitches(self): + ''' + Registers all switches that can be used while calling the script from the + command line interface. + ''' -def registerUsageMessage(self): - ''' - Takes the script __doc__ and adds the DIRAC version to it - ''' - usageMessage = 'DIRAC %s\n' % version - usageMessage += __doc__ + self.registerSwitch('', 'init', 'Initialize the element to the status in the CS ( applicable for StorageElements )') + self.registerSwitch('', 'element=', 'Element family to be Synchronized ( Site, Resource or Node ) or `all`') + self.registerSwitch('', 'defaultStatus=', 'Default element status if not given in the CS') - self.setUsageMessage(usageMessage) + def registerUsageMessage(self): + ''' + Takes the script __doc__ and adds the DIRAC version to it + ''' + usageMessage = 'DIRAC %s\n' % version + usageMessage += __doc__ -def parseSwitches(self): - ''' - Parses the arguments passed by the user - ''' + self.setUsageMessage(usageMessage) - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - if args: - subLogger.error("Found the following positional args '%s', but we only accept switches" % args) - subLogger.error("Please, check documentation below") - self.showHelp(exitCode=1) - switches = dict(self.getUnprocessedSwitches()) + def parseSwitches(self): + ''' + Parses the arguments passed by the user + ''' - # Default values - switches.setdefault('element', None) - switches.setdefault('defaultStatus', 'Banned') - if not switches['element'] in ('all', 'Site', 'Resource', 'Node', None): - subLogger.error("Found %s as element switch" % switches['element']) - subLogger.error("Please, check documentation below") - self.showHelp(exitCode=1) + switches, args = self.parseCommandLine(ignoreErrors=True) + if args: + self.subLogger.error("Found the following positional args '%s', but we only accept switches" % args) + self.subLogger.error("Please, check documentation below") + self.showHelp(exitCode=1) - subLogger.debug("The switches used are:") - map(subLogger.debug, switches.items()) + switches = dict(switches) - return switches + # Default values + switches.setdefault('element', None) + switches.setdefault('defaultStatus', 'Banned') + if not switches['element'] in ('all', 'Site', 'Resource', 'Node', None): + self.subLogger.error("Found %s as element switch" % switches['element']) + self.subLogger.error("Please, check documentation below") + self.showHelp(exitCode=1) + self.subLogger.debug("The switches used are:") + map(self.subLogger.debug, switches.items()) -def synchronize(): - ''' - Given the element switch, adds rows to the Status tables with Status - `Unknown` and Reason `Synchronized`. - ''' - global DEFAULT_STATUS + return switches - from DIRAC.ResourceStatusSystem.Utilities import Synchronizer - synchronizer = Synchronizer.Synchronizer(defaultStatus=DEFAULT_STATUS) + def synchronize(self): + ''' + Given the element switch, adds rows to the Status tables with Status + `Unknown` and Reason `Synchronized`. + ''' + from DIRAC.ResourceStatusSystem.Utilities import Synchronizer - if switchDict['element'] in ('Site', 'all'): - subLogger.info('Synchronizing Sites') - res = synchronizer._syncSites() - if not res['OK']: - return res + synchronizer = Synchronizer.Synchronizer(defaultStatus=self.DEFAULT_STATUS) - if switchDict['element'] in ('Resource', 'all'): - subLogger.info('Synchronizing Resource') - res = synchronizer._syncResources() - if not res['OK']: - return res + if self.switchDict['element'] in ('Site', 'all'): + self.subLogger.info('Synchronizing Sites') + res = synchronizer._syncSites() + if not res['OK']: + return res - if switchDict['element'] in ('Node', 'all'): - subLogger.info('Synchronizing Nodes') - res = synchronizer._syncNodes() - if not res['OK']: - return res + if self.switchDict['element'] in ('Resource', 'all'): + self.subLogger.info('Synchronizing Resource') + res = synchronizer._syncResources() + if not res['OK']: + return res - return S_OK() + if self.switchDict['element'] in ('Node', 'all'): + self.subLogger.info('Synchronizing Nodes') + res = synchronizer._syncNodes() + if not res['OK']: + return res + return S_OK() -def initSites(): - ''' - Initializes Sites statuses taking their values from the "SiteMask" table of "JobDB" database. - ''' - from DIRAC.WorkloadManagementSystem.Client.WMSAdministratorClient import WMSAdministratorClient - from DIRAC.ResourceStatusSystem.Client import ResourceStatusClient - rssClient = ResourceStatusClient.ResourceStatusClient() + def initSites(self): + ''' + Initializes Sites statuses taking their values from the "SiteMask" table of "JobDB" database. + ''' + from DIRAC.WorkloadManagementSystem.Client.WMSAdministratorClient import WMSAdministratorClient + from DIRAC.ResourceStatusSystem.Client import ResourceStatusClient - sites = WMSAdministratorClient().getAllSiteMaskStatus() + rssClient = ResourceStatusClient.ResourceStatusClient() - if not sites['OK']: - subLogger.error(sites['Message']) - DIRACExit(1) + sites = WMSAdministratorClient().getAllSiteMaskStatus() - for site, elements in sites['Value'].items(): - result = rssClient.addOrModifyStatusElement("Site", "Status", - name=site, - statusType='all', - status=elements[0], - elementType=site.split('.')[0], - tokenOwner='rs_svc', - reason='dirac-rss-sync') - if not result['OK']: - subLogger.error(result['Message']) + if not sites['OK']: + self.subLogger.error(sites['Message']) DIRACExit(1) - return S_OK() + for site, elements in sites['Value'].items(): + result = rssClient.addOrModifyStatusElement("Site", "Status", + name=site, + statusType='all', + status=elements[0], + elementType=site.split('.')[0], + tokenOwner='rs_svc', + reason='dirac-rss-sync') + if not result['OK']: + self.subLogger.error(result['Message']) + DIRACExit(1) + return S_OK() -def initSEs(): - ''' - Initializes SEs statuses taking their values from the CS. - ''' - from DIRAC import gConfig - from DIRAC.DataManagementSystem.Utilities.DMSHelpers import DMSHelpers - from DIRAC.ResourceStatusSystem.Utilities import CSHelpers, RssConfiguration - from DIRAC.ResourceStatusSystem.PolicySystem import StateMachine - from DIRAC.ResourceStatusSystem.Client import ResourceStatusClient - # WarmUp local copy - CSHelpers.warmUp() + def initSEs(self): + ''' + Initializes SEs statuses taking their values from the CS. + ''' + from DIRAC import gConfig + from DIRAC.DataManagementSystem.Utilities.DMSHelpers import DMSHelpers + from DIRAC.ResourceStatusSystem.Utilities import CSHelpers, RssConfiguration + from DIRAC.ResourceStatusSystem.PolicySystem import StateMachine + from DIRAC.ResourceStatusSystem.Client import ResourceStatusClient - subLogger.info('Initializing SEs') + # WarmUp local copy + CSHelpers.warmUp() - rssClient = ResourceStatusClient.ResourceStatusClient() + self.subLogger.info('Initializing SEs') - statuses = StateMachine.RSSMachine(None).getStates() - statusTypes = RssConfiguration.RssConfiguration().getConfigStatusType('StorageElement') - reason = 'dirac-rss-sync' + rssClient = ResourceStatusClient.ResourceStatusClient() - subLogger.debug(statuses) - subLogger.debug(statusTypes) + statuses = StateMachine.RSSMachine(None).getStates() + statusTypes = RssConfiguration.RssConfiguration().getConfigStatusType('StorageElement') + reason = 'dirac-rss-sync' - for se in DMSHelpers().getStorageElements(): + self.subLogger.debug(statuses) + self.subLogger.debug(statusTypes) - subLogger.debug(se) + for se in DMSHelpers().getStorageElements(): - opts = gConfig.getOptionsDict('/Resources/StorageElements/%s' % se) - if not opts['OK']: - subLogger.warn(opts['Message']) - continue - opts = opts['Value'] + self.subLogger.debug(se) - subLogger.debug(opts) + opts = gConfig.getOptionsDict('/Resources/StorageElements/%s' % se) + if not opts['OK']: + self.subLogger.warn(opts['Message']) + continue + opts = opts['Value'] - # We copy the list into a new object to remove items INSIDE the loop ! - statusTypesList = statusTypes[:] + self.subLogger.debug(opts) - for statusType, status in opts.items(): + # We copy the list into a new object to remove items INSIDE the loop ! + statusTypesList = statusTypes[:] - # Sanity check... - if statusType not in statusTypesList: - continue + for statusType, status in opts.items(): - # Transforms statuses to RSS terms - if status in ('NotAllowed', 'InActive'): - status = 'Banned' + # Sanity check... + if statusType not in statusTypesList: + continue - if status not in statuses: - subLogger.error('%s not a valid status for %s - %s' % (status, se, statusType)) - continue + # Transforms statuses to RSS terms + if status in ('NotAllowed', 'InActive'): + status = 'Banned' - # We remove from the backtracking - statusTypesList.remove(statusType) + if status not in statuses: + self.subLogger.error('%s not a valid status for %s - %s' % (status, se, statusType)) + continue - subLogger.debug([se, statusType, status, reason]) - result = rssClient.addOrModifyStatusElement('Resource', 'Status', - name=se, - statusType=statusType, - status=status, - elementType='StorageElement', - tokenOwner='rs_svc', - reason=reason) + # We remove from the backtracking + statusTypesList.remove(statusType) - if not result['OK']: - subLogger.error('Failed to modify') - subLogger.error(result['Message']) - continue + self.subLogger.debug([se, statusType, status, reason]) + result = rssClient.addOrModifyStatusElement('Resource', 'Status', + name=se, + statusType=statusType, + status=status, + elementType='StorageElement', + tokenOwner='rs_svc', + reason=reason) - # Backtracking: statusTypes not present on CS - for statusType in statusTypesList: + if not result['OK']: + self.subLogger.error('Failed to modify') + self.subLogger.error(result['Message']) + continue - result = rssClient.addOrModifyStatusElement('Resource', 'Status', - name=se, - statusType=statusType, - status=DEFAULT_STATUS, - elementType='StorageElement', - tokenOwner='rs_svc', - reason=reason) - if not result['OK']: - subLogger.error('Error in backtracking for %s,%s,%s' % (se, statusType, status)) - subLogger.error(result['Message']) + # Backtracking: statusTypes not present on CS + for statusType in statusTypesList: - return S_OK() + result = rssClient.addOrModifyStatusElement('Resource', 'Status', + name=se, + statusType=statusType, + status=self.DEFAULT_STATUS, + elementType='StorageElement', + tokenOwner='rs_svc', + reason=reason) + if not result['OK']: + self.subLogger.error('Error in backtracking for %s,%s,%s' % (se, statusType, status)) + self.subLogger.error(result['Message']) + return S_OK() -def run(): - ''' - Main function of the script - ''' - result = synchronize() - if not result['OK']: - subLogger.error(result['Message']) - DIRACExit(1) + def run(self): + ''' + Main function of the script + ''' - if 'init' in switchDict: + result = self.synchronize() + if not result['OK']: + self.subLogger.error(result['Message']) + DIRACExit(1) - if switchDict.get('element') == "Site": - result = initSites() - if not result['OK']: - subLogger.error(result['Message']) - DIRACExit(1) + if 'init' in self.switchDict: - if switchDict.get('element') == "Resource": - result = initSEs() - if not result['OK']: - subLogger.error(result['Message']) - DIRACExit(1) + if self.switchDict.get('element') == "Site": + result = self.initSites() + if not result['OK']: + self.subLogger.error(result['Message']) + DIRACExit(1) + if self.switchDict.get('element') == "Resource": + result = self.initSEs() + if not result['OK']: + self.subLogger.error(result['Message']) + DIRACExit(1) -@DIRACScript() -def main(self): - global subLogger - global switchDict - global DEFAULT_STATUS - subLogger = gLogger.getSubLogger(__file__) - registerSwitches(self) - registerUsageMessage(self) - switchDict = parseSwitches(self) - DEFAULT_STATUS = switchDict.get('defaultStatus', 'Banned') +@RSSSync() +def main(self): + self.registerSwitches() + self.registerUsageMessage() + self.switchDict = self.parseSwitches() + self.DEFAULT_STATUS = self.switchDict.get('defaultStatus', 'Banned') # Run script - run() + self.run() # Bye DIRACExit(0) diff --git a/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py b/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py index 660f4666b6f..f342e7f1acd 100755 --- a/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py +++ b/src/DIRAC/Resources/scripts/dirac_resource_get_parameters.py @@ -12,42 +12,38 @@ __RCSID__ = "$Id$" import json -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript -ceName = '' -Queue = '' -Site = '' +class ResourceGetParameters(DIRACScript): -@DIRACScript() -def main(self): - global ceName - global Queue - global Site + def initParameters(self): + self.ceName = '' + self.Queue = '' + self.Site = '' - from DIRAC import gLogger, exit as DIRACExit - from DIRAC.ConfigurationSystem.Client.Helpers import Resources + def setCEName(self, args): + self.ceName = args - def setCEName(args): - global ceName - ceName = args + def setSite(self, args): + self.Site = args - def setSite(args): - global Site - Site = args + def setQueue(self, args): + self.Queue = args - def setQueue(args): - global Queue - Queue = args +@ResourceGetParameters() +def main(self): + from DIRAC import gLogger, exit as DIRACExit + from DIRAC.ConfigurationSystem.Client.Helpers import Resources - self.registerSwitch("N:", "Name=", "Computing Element Name (Mandatory)", setCEName) - self.registerSwitch("S:", "Site=", "Site Name (Mandatory)", setSite) - self.registerSwitch("Q:", "Queue=", "Queue Name (Mandatory)", setQueue) + self.registerSwitch("N:", "Name=", "Computing Element Name (Mandatory)", + self.setCEName) + self.registerSwitch("S:", "Site=", "Site Name (Mandatory)", self.setSite) + self.registerSwitch("Q:", "Queue=", "Queue Name (Mandatory)", self.setQueue) Script.parseCommandLine(ignoreErrors=True) - result = Resources.getQueue(Site, ceName, Queue) + result = Resources.getQueue(self.Site, self.ceName, self.Queue) if not result['OK']: gLogger.error("Could not retrieve resource parameters", ": " + result['Message']) diff --git a/src/DIRAC/Resources/scripts/dirac_resource_info.py b/src/DIRAC/Resources/scripts/dirac_resource_info.py index 72d345dba43..a9115ce9233 100644 --- a/src/DIRAC/Resources/scripts/dirac_resource_info.py +++ b/src/DIRAC/Resources/scripts/dirac_resource_info.py @@ -2,9 +2,6 @@ """ 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 @@ -12,34 +9,33 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript -@DIRACScript() -def main(self): +class ResourceGetParameters(DIRACScript): - from DIRAC import S_OK, gLogger, gConfig, exit as DIRACExit + def initParameters(self): + self.ceFlag = False + self.seFlag = False + self.voName = None - ceFlag = False - seFlag = False - voName = None + def setCEFlag(self, args_): + self.ceFlag = True - def setCEFlag(args_): - global ceFlag - ceFlag = True + def setSEFlag(self, args_): + self.seFlag = True - def setSEFlag(args_): - global seFlag - seFlag = True + def setVOName(self, args): + self.voName = args - def setVOName(args): - global voName - voName = args - self.registerSwitch("C", "ce", "Get CE info", setCEFlag) - self.registerSwitch("S", "se", "Get SE info", setSEFlag) - self.registerSwitch("V:", "vo=", "Get resources for the given VO. If not set, taken from the proxy", setVOName) +@ResourceGetParameters() +def main(self): + from DIRAC import S_OK, gLogger, gConfig, exit as DIRACExit + + self.registerSwitch("C", "ce", "Get CE info", self.setCEFlag) + self.registerSwitch("S", "se", "Get SE info", self.setSEFlag) + self.registerSwitch("V:", "vo=", "Get resources for the given VO. If not set, taken from the proxy", self.setVOName) self.parseCommandLine(ignoreErrors=True) @@ -51,9 +47,9 @@ def setVOName(args): from DIRAC.ResourceStatusSystem.Client.ResourceStatus import ResourceStatus from DIRAC.ResourceStatusSystem.Client.SiteStatus import SiteStatus - def printCEInfo(voName): + def printCEInfo(self): - resultQueues = Resources.getQueues(community=voName) + resultQueues = Resources.getQueues(community=self.voName) if not resultQueues['OK']: gLogger.error('Failed to get CE information') DIRACExit(-1) @@ -95,14 +91,14 @@ def printCEInfo(voName): gLogger.notice(printTable(fields, records, printOut=False, columnSeparator=' ')) return S_OK() - def printSEInfo(voName): + def printSEInfo(self): fields = ('SE', 'Status', 'Protocols', 'Aliases') records = [] - for se in DMSHelpers(voName).getStorageElements(): # this will get the full list of SEs, not only the vo's ones. + for se in DMSHelpers(self.voName).getStorageElements(): # this will get the full list of SEs, not only the vo's ones. seObject = StorageElement(se) - if not (seObject.vo and voName in seObject.vo.strip().split(',') or not seObject.voName): + if not (seObject.vo and self.voName in seObject.vo.strip().split(',') or not seObject.self.voName): continue result = seObject.status() @@ -122,39 +118,38 @@ def printSEInfo(voName): gLogger.notice(printTable(fields, records, printOut=False, columnSeparator=' ')) return S_OK() - if __name__ == '__main__': - if not voName: - # Get the current VO - result = getVOfromProxyGroup() - if not result['OK']: - gLogger.error('No proxy found, please login') - DIRACExit(-1) - voName = result['Value'] - else: - result = gConfig.getSections('/Registry/VO') - if not result['OK']: - gLogger.error('Failed to contact the CS') - DIRACExit(-1) - if voName not in result['Value']: - gLogger.error('Invalid VO name') - DIRACExit(-1) - - if not (ceFlag or seFlag): - gLogger.error('Resource type is not specified') + if not self.voName: + # Get the current VO + result = getVOfromProxyGroup() + if not result['OK']: + gLogger.error('No proxy found, please login') + DIRACExit(-1) + self.voName = result['Value'] + else: + result = gConfig.getSections('/Registry/VO') + if not result['OK']: + gLogger.error('Failed to contact the CS') + DIRACExit(-1) + if self.voName not in result['Value']: + gLogger.error('Invalid VO name') + DIRACExit(-1) + + if not (self.ceFlag or self.seFlag): + gLogger.error('Resource type is not specified') + DIRACExit(-1) + + if self.ceFlag: + result = printCEInfo(self.voName) + if not result['OK']: + gLogger.error(result['Message']) + DIRACExit(-1) + if self.seFlag: + result = printSEInfo(self.voName) + if not result['OK']: + gLogger.error(result['Message']) DIRACExit(-1) - if ceFlag: - result = printCEInfo(voName) - if not result['OK']: - gLogger.error(result['Message']) - DIRACExit(-1) - if seFlag: - result = printSEInfo(voName) - if not result['OK']: - gLogger.error(result['Message']) - DIRACExit(-1) - - DIRACExit(0) + DIRACExit(0) if __name__ == "__main__": diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py index c045d5c7131..954ecde5de4 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_file.py @@ -13,12 +13,23 @@ - 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 +Example: + $ dirac-stager-monitor-file.py /lhcb/LHCb/Collision12/FULL.DST/00020846/0005/0_1.full.dst GRIDKA-RDST + -------------------- + LFN : /lhcb/LHCb/Collision12/FULL.DST/00020846/0005/0_1.full.dst + SE : GRIDKA-RDST + PFN : srm://gridka-dCache.fzk.de/pnfs/gridka.de/lhcb/LHCb/Collision12/FULL.DST/00020846/0005/0_1.full.dst + Status : StageSubmitted + LastUpdate: 2013-06-11 18:13:40 + Reason : None + Jobs requesting this file to be staged: 48518896 + ------SRM staging request info-------------- + SRM RequestID: -1768636375 + SRM StageStatus: StageSubmitted + SRM StageRequestSubmitTime: 2013-06-11 18:13:38 + SRM StageRequestCompletedTime: None + SRM PinExpiryTime: None + SRM PinLength: 43200 """ from __future__ import absolute_import from __future__ import division @@ -26,21 +37,18 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): + self.registerArgument("LFN: LFN of the staging file") + self.registerArgument("SE: Storage Element for the staging file") self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - if len(args) < 2: - self.showHelp() from DIRAC import exit as DIRACExit, gLogger - lfn = args[0] - se = args[1] + lfn, se = self.getPositionalArgs(group=True) from DIRAC.StorageManagementSystem.Client.StorageManagerClient import StorageManagerClient client = StorageManagerClient() @@ -95,23 +103,3 @@ def main(self): if __name__ == "__main__": main() # pylint: disable=no-value-for-parameter - - -''' Example: -dirac-stager-monitor-file.py /lhcb/LHCb/Collision12/FULL.DST/00020846/0005/00020846_00056603_1.full.dst GRIDKA-RDST --------------------- -LFN : /lhcb/LHCb/Collision12/FULL.DST/00020846/0005/00020846_00056603_1.full.dst -SE : GRIDKA-RDST -PFN : srm://gridka-dCache.fzk.de/pnfs/gridka.de/lhcb/LHCb/Collision12/FULL.DST/00020846/0005/00020846_00056603_1.full.dst -Status : StageSubmitted -LastUpdate: 2013-06-11 18:13:40 -Reason : None -Jobs requesting this file to be staged: 48518896 -------SRM staging request info-------------- -SRM RequestID: -1768636375 -SRM StageStatus: StageSubmitted -SRM StageRequestSubmitTime: 2013-06-11 18:13:38 -SRM StageRequestCompletedTime: None -SRM PinExpiryTime: None -SRM PinLength: 43200 -''' # NOQA diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py index 7f927087250..8315ccce1f7 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_jobs.py @@ -6,11 +6,75 @@ """ Report the summary of the staging progress of jobs -Usage: - dirac-stager-monitor-jobs jobID [jobID] [jobID] ... - -Arguments: - JobID: DIRAC job ID +Example: + $ dirac-stager-monitor-jobs.py 5688643 5688644 + + JobID : 5688643 + Status : Offline + SubmitTime : 2013-06-10 15:21:03 + CompleteTime : None + Staging files for this job: + -------------------- + LFN : /lhcb/LHCb/Collision10/SDST/01/0000/01_00003705_1.sdst + SE : IN2P3-RDST + PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/01/0000/01_00003705_1.sdst + Status : Offline + Reason : None + -------------------- + LFN : /lhcb/LHCb/Collision10/SDST/01/0000/01_00001918_1.sdst + SE : IN2P3-RDST + PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/01/0000/01_00001918_1.sdst + Status : Offline + Reason : None + -------------------- + LFN : /lhcb/LHCb/Collision10/SDST/01/0000/01_00002347_1.sdst + SE : IN2P3-RDST + PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/01/0000/01_00002347_1.sdst + Status : Offline + Reason : None + -------------------- + LFN : /lhcb/LHCb/Collision10/SDST/01/0000/01_00003701_1.sdst + SE : IN2P3-RDST + PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/01/0000/01_00003701_1.sdst + Status : Offline + Reason : None + ---------------------- + JobID : 5688644 + Status : Offline + SubmitTime : 2013-06-10 15:21:07 + CompleteTime : None + Staging files for this job: + -------------------- + LFN : /lhcb/LHCb/Collision10/SDST/01/0000/01_00005873_1.sdst + SE : IN2P3-RDST + PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/01/0000/01_00005873_1.sdst + Status : Offline + Reason : None + -------------------- + LFN : /lhcb/LHCb/Collision10/SDST/01/0000/01_00004468_1.sdst + SE : IN2P3-RDST + PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/01/0000/01_00004468_1.sdst + Status : Offline + Reason : None + -------------------- + LFN : /lhcb/LHCb/Collision10/SDST/01/0000/01_00000309_1.sdst + SE : IN2P3-RDST + PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/01/0000/01_00000309_1.sdst + Status : Offline + Reason : None + -------------------- + LFN : /lhcb/LHCb/Collision10/SDST/01/0000/01_00005911_1.sdst + SE : IN2P3-RDST + PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/01/0000/01_00005911_1.sdst + Status : Offline + Reason : None + -------------------- + LFN : /lhcb/LHCb/Collision10/SDST/01/0000/01_00003296_1.sdst + SE : IN2P3-RDST + PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/01/0000/01_00003296_1.sdst + Status : Offline + Reason : None + -------------------- """ from __future__ import absolute_import from __future__ import division @@ -18,12 +82,12 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): + self.registerArgument(["JobID: DIRAC Job ID"]) self.parseCommandLine(ignoreErrors=False) args = self.getPositionalArgs() @@ -77,75 +141,3 @@ def main(self): if __name__ == "__main__": main() # pylint: disable=no-value-for-parameter - - -''' Example: -dirac-stager-monitor-jobs.py 5688643 5688644 - -JobID : 5688643 -Status : Offline -SubmitTime : 2013-06-10 15:21:03 -CompleteTime : None -Staging files for this job: - -------------------- - LFN : /lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00003705_1.sdst - SE : IN2P3-RDST - PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00003705_1.sdst - Status : Offline - Reason : None - -------------------- - LFN : /lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00001918_1.sdst - SE : IN2P3-RDST - PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00001918_1.sdst - Status : Offline - Reason : None - -------------------- - LFN : /lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00002347_1.sdst - SE : IN2P3-RDST - PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00002347_1.sdst - Status : Offline - Reason : None - -------------------- - LFN : /lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00003701_1.sdst - SE : IN2P3-RDST - PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00003701_1.sdst - Status : Offline - Reason : None ----------------------- -JobID : 5688644 -Status : Offline -SubmitTime : 2013-06-10 15:21:07 -CompleteTime : None -Staging files for this job: - -------------------- - LFN : /lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00005873_1.sdst - SE : IN2P3-RDST - PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00005873_1.sdst - Status : Offline - Reason : None - -------------------- - LFN : /lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00004468_1.sdst - SE : IN2P3-RDST - PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00004468_1.sdst - Status : Offline - Reason : None - -------------------- - LFN : /lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00000309_1.sdst - SE : IN2P3-RDST - PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00000309_1.sdst - Status : Offline - Reason : None - -------------------- - LFN : /lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00005911_1.sdst - SE : IN2P3-RDST - PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00005911_1.sdst - Status : Offline - Reason : None - -------------------- - LFN : /lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00003296_1.sdst - SE : IN2P3-RDST - PFN : srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/lhcb/LHCb/Collision10/SDST/00010270/0000/00010270_00003296_1.sdst - Status : Offline - Reason : None - -------------------- -''' # NOQA diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py index df8aad08d36..dd159a8e847 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_request.py @@ -5,12 +5,6 @@ ######################################################################## """ Report the summary of the stage task from the DB. - -Usage: - dirac-stager-monitor-request [options] ... Request ... - -Arguments: - Request: ID of the Stage request in the StorageManager """ from __future__ import absolute_import from __future__ import division @@ -18,12 +12,12 @@ __RCSID__ = "$Id$" -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): + self.registerArgument("Request: ID of the Stage request in the StorageManager") self.parseCommandLine(ignoreErrors=False) args = self.getPositionalArgs() diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py index 7b6961c7e0a..d41baea7cc0 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_monitor_requests.py @@ -6,15 +6,7 @@ """ 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! +WARNING: Query may be heavy, please use --limit switch! Example: $ dirac-stager-show-requests.py --status=Staged --se=GRIDKA-RDST --limit=10 --showJobs=YES @@ -38,7 +30,6 @@ __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 diff --git a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py index 3e0bb838ab7..cdec0c5648d 100755 --- a/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py +++ b/src/DIRAC/StorageManagementSystem/scripts/dirac_stager_show_stats.py @@ -27,7 +27,7 @@ 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 diff --git a/src/DIRAC/TransformationSystem/Utilities/ReplicationCLIParameters.py b/src/DIRAC/TransformationSystem/Utilities/ReplicationCLIParameters.py index 414ce7e0f48..ed5e6718e8e 100644 --- a/src/DIRAC/TransformationSystem/Utilities/ReplicationCLIParameters.py +++ b/src/DIRAC/TransformationSystem/Utilities/ReplicationCLIParameters.py @@ -7,13 +7,14 @@ from DIRAC import S_OK, S_ERROR, gLogger from DIRAC.Core.Security.ProxyInfo import getProxyInfo +from DIRAC.Core.Utilities.DIRACScript import DIRACScript from DIRAC.ConfigurationSystem.Client.Helpers.Registry import getVOMSVOForGroup -class Params(object): +class Params(DIRACScript): """Parameter Object""" - def __init__(self): + def initParameters(self): self.targetSE = [] self.sourceSE = '' self.groupSize = 1 @@ -80,22 +81,17 @@ def setEnable(self, _): self.enable = True return S_OK() - def registerSwitches(self, script): - """ register command line arguments - - :param script: Dirac.Core.Base Script Class - :type script: DIRAC.Core.Base.Script - """ - - script.registerSwitch("G:", "GroupSize=", "Number of Files per transformation task", self.setGroupSize) - script.registerSwitch("R:", "GroupName=", "TransformationGroup Name", self.setGroupName) - script.registerSwitch("S:", "SourceSEs=", "SourceSE(s) to use, comma separated list", self.setSourceSE) - script.registerSwitch("N:", "Extraname=", "String to append to transformation name", self.setExtraname) - script.registerSwitch("P:", "Plugin=", "Plugin to use for transformation", self.setPlugin) - script.registerSwitch("T:", "Flavour=", "Flavour to create: Replication or Moving", self.setTransFlavour) - script.registerSwitch("K:", "MetaKey=", "Meta Key to use: TransformationID", self.setMetaKey) - script.registerSwitch("M:", "MetaData=", "MetaData to use Key/Value Pairs: 'DataType:REC,'", self.setMetadata) - script.registerSwitch("x", "Enable", "Enable the transformation creation, otherwise dry-run", self.setEnable) + def registerSwitches(self): + """ register command line arguments """ + self.registerSwitch("G:", "GroupSize=", "Number of Files per transformation task", self.setGroupSize) + self.registerSwitch("R:", "GroupName=", "TransformationGroup Name", self.setGroupName) + self.registerSwitch("S:", "SourceSEs=", "SourceSE(s) to use, comma separated list", self.setSourceSE) + self.registerSwitch("N:", "Extraname=", "String to append to transformation name", self.setExtraname) + self.registerSwitch("P:", "Plugin=", "Plugin to use for transformation", self.setPlugin) + self.registerSwitch("T:", "Flavour=", "Flavour to create: Replication or Moving", self.setTransFlavour) + self.registerSwitch("K:", "MetaKey=", "Meta Key to use: TransformationID", self.setMetaKey) + self.registerSwitch("M:", "MetaData=", "MetaData to use Key/Value Pairs: 'DataType:REC,'", self.setMetadata) + self.registerSwitch("x", "Enable", "Enable the transformation creation, otherwise dry-run", self.setEnable) useMessage = [] useMessage.append("Create one replication transformation for each MetaValue given") @@ -103,20 +99,18 @@ def registerSwitches(self, script): useMessage.append("MetaValue and TargetSEs can be comma separated lists") useMessage.append("Usage:") useMessage.append(" %s [-G] [-S]" - "[-N] [-T] [-M] [-K...] -x" % script.scriptName) - script.setUsageMessage('\n'.join(useMessage)) + "[-N] [-T] [-M] [-K...] -x" % self.scriptName) + self.setUsageMessage('\n'.join(useMessage)) - def checkSettings(self, script, checkArguments=True): + def checkSettings(self, checkArguments=True): """check if all required parameters are set, print error message and return S_ERROR if not - :param script: The script object - :type script: DIRAC.Core.Base.Script :param bool checkArguments: if false do not check for the correct number of arguments, should only be changed if using derived class """ if checkArguments: - args = script.getPositionalArgs() + args = self.getPositionalArgs() if len(args) == 2: self.setMetaValues(args[0]) self.setTargetSE(args[1]) @@ -133,7 +127,7 @@ def checkSettings(self, script, checkArguments=True): if not self.errorMessages: return S_OK() gLogger.error("\n".join(self.errorMessages)) - script.showHelp() + self.showHelp() return S_ERROR() def _checkProxy(self): diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py b/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py index 50ca832a36a..138195c23d2 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py @@ -18,12 +18,10 @@ __RCSID__ = "$Id$" import os -import shutil import ssl - +import shutil from six.moves.urllib.request import urlopen -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @@ -137,9 +135,9 @@ def __runJobLocally(jobID, basepath, vo): @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=False) self.registerSwitch('D:', 'Download=', 'Defines data acquisition as DownloadInputData') self.registerSwitch('P:', 'Protocol=', 'Defines data acquisition as InputDataByProtocol') + self.parseCommandLine(ignoreErrors=False) _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 95409a9d4c6..78c74c669ff 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_add_files.py @@ -1,9 +1,6 @@ #!/usr/bin/env python """ Add files to an existing transformation - -Usage: - dirac-transformation-add-files TransID """ from __future__ import absolute_import from __future__ import division @@ -12,24 +9,22 @@ __RCSID__ = "$Id$" import os + import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): + self.registerArgument("TransID: transformation ID") + self.registerArgument(("LFN: LFN", "FileName: file containing LFNs")) self.parseCommandLine() from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient - args = self.getPositionalArgs() - if len(args) < 2: - self.showHelp(exitCode=1) + tID, inputFileName = self.getPositionalArgs(group=True) # get arguments - inputFileName = args[1] - lfns = [] if os.path.exists(inputFileName): inputFile = open(inputFileName, 'r') @@ -40,7 +35,7 @@ def main(self): lfns.append(inputFileName) tc = TransformationClient() - res = tc.addFilesToTransformation(args[0], lfns) # Files added here + res = tc.addFilesToTransformation(tID, lfns) # Files added here if not res['OK']: DIRAC.gLogger.error(res['Message']) diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py index 5dcbdf09805..aa4ff64bd14 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_archive.py @@ -1,27 +1,20 @@ #!/usr/bin/env python """ Archive a transformation - -Usage: - dirac-transformation-archive transID [transID] [transID] """ - from __future__ import print_function from __future__ import absolute_import from __future__ import division + import sys -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): - self.parseCommandLine() - args = self.getPositionalArgs() - - if not args: - self.showHelp() + self.registerArgument(["transID: transformation ID"]) + _, args = self.parseCommandLine() transIDs = [int(arg) for arg in args] diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py index 3a2a03987f6..220a18eda8d 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_clean.py @@ -1,27 +1,20 @@ #!/usr/bin/env python """ Clean a tranformation - -Usage: - dirac-transformation-clean transID [transID] [transID] """ - from __future__ import print_function from __future__ import absolute_import from __future__ import division + import sys -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): - self.parseCommandLine() - - args = self.getPositionalArgs() - if not args: - self.showHelp() + self.registerArgument(["transID: transformation ID"]) + _, args = self.parseCommandLine() from DIRAC.TransformationSystem.Agent.TransformationCleaningAgent import TransformationCleaningAgent from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py index 0329b5f72f9..1d511c63fc1 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_cli.py @@ -6,7 +6,6 @@ from __future__ import division from __future__ import print_function -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py index c7769a61c2e..9bbc99f2690 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_get_files.py @@ -2,9 +2,6 @@ """ Get the files attached to a transformation - -Usage: - dirac-transformation-get-files TransID """ from __future__ import absolute_import from __future__ import division @@ -13,17 +10,16 @@ __RCSID__ = "$Id$" import DIRAC -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): - self.parseCommandLine() + self.registerArgument("transID: transformation ID") + _, args = self.parseCommandLine() from DIRAC.TransformationSystem.Client.TransformationClient import TransformationClient - args = self.getPositionalArgs() if len(args) != 1: self.showHelp(exitCode=1) diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py index 8376a709c75..03a9e3c2980 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_recover_data.py @@ -6,17 +6,17 @@ from __future__ import division from __future__ import print_function +__RCSID__ = '$Id$' + from DIRAC import S_OK, gLogger from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript -__RCSID__ = '$Id$' - -class Params(object): +class TransformationRecoverData(DIRACScript): """Collection of Parameters set via CLI switches.""" - def __init__(self): + def initParameters(self): self.enabled = False self.transID = 0 self.switches = [ @@ -33,10 +33,9 @@ def setTransID(self, transID): return S_OK() -@DIRACScript() +@TransformationRecoverData() def main(self): - PARAMS = Params() - self.registerSwitches(PARAMS.switches) + self.registerSwitches(self.switches) self.parseCommandLine(ignoreErrors=False) # Create Data Recovery Agent and run over single transformation. @@ -44,8 +43,8 @@ def main(self): from DIRAC.TransformationSystem.Agent.DataRecoveryAgent import DataRecoveryAgent DRA = DataRecoveryAgent('Transformation/DataRecoveryAgent', 'Transformation/DataRecoveryAgent') DRA.jobStatus = ['Done', 'Failed'] - DRA.enabled = PARAMS.enabled - TRANSFORMATION = TransformationClient().getTransformations(condDict={'TransformationID': PARAMS.transID}) + DRA.enabled = self.enabled + TRANSFORMATION = TransformationClient().getTransformations(condDict={'TransformationID': self.transID}) if not TRANSFORMATION['OK']: gLogger.error('Failed to find transformation: %s' % TRANSFORMATION['Message']) exit(1) @@ -55,7 +54,7 @@ def main(self): TRANS_INFO_DICT = TRANSFORMATION['Value'][0] TRANS_INFO_DICT.pop('Body', None) gLogger.notice('Found transformation: %s' % TRANS_INFO_DICT) - DRA.treatTransformation(PARAMS.transID, TRANS_INFO_DICT) + DRA.treatTransformation(self.transID, TRANS_INFO_DICT) exit(0) diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py index 079f008c611..7332d9e1869 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_remove_output.py @@ -1,9 +1,6 @@ #!/usr/bin/env python """ Remove the outputs produced by a transformation - -Usage: - dirac-transformation-remove-output transID [transID] [transID] """ from __future__ import print_function @@ -18,11 +15,8 @@ @DIRACScript() def main(self): - self.parseCommandLine() - args = self.getPositionalArgs() - - if not args: - self.showHelp() + self.registerArgument(["transID: transformation ID"]) + _, args = self.parseCommandLine() transIDs = [int(arg) for arg in args] diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_replication.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_replication.py index 08371696c08..24e3db6b667 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_replication.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_replication.py @@ -5,44 +5,41 @@ :since: May 31, 2018 :author: A. Sailer """ - 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.TransformationSystem.Utilities.ReplicationCLIParameters import Params + -@DIRACScript() +@Params() def main(self): """reads command line parameters, makes check and creates replication transformation""" from DIRAC import gLogger, exit as dexit - from DIRAC.TransformationSystem.Utilities.ReplicationCLIParameters import Params - clip = Params() - clip.registerSwitches(self) + self.registerSwitches() self.parseCommandLine() from DIRAC.TransformationSystem.Utilities.ReplicationTransformation import createDataTransformation - if not clip.checkSettings(self)['OK']: + if not self.checkSettings()['OK']: gLogger.error("ERROR: Missing settings") dexit(1) - for metaValue in clip.metaValues: - resCreate = createDataTransformation(flavour=clip.flavour, - targetSE=clip.targetSE, - sourceSE=clip.sourceSE, - metaKey=clip.metaKey, + for metaValue in self.metaValues: + resCreate = createDataTransformation(flavour=self.flavour, + targetSE=self.targetSE, + sourceSE=self.sourceSE, + metaKey=self.metaKey, metaValue=metaValue, - extraData=clip.extraData, - extraname=clip.extraname, - groupSize=clip.groupSize, - tGroup=clip.groupName, - plugin=clip.plugin, - enable=clip.enable, + extraData=self.extraData, + extraname=self.extraname, + groupSize=self.groupSize, + tGroup=self.groupName, + plugin=self.plugin, + enable=self.enable, ) if not resCreate['OK']: gLogger.error("Failed to create Transformation", resCreate['Message']) diff --git a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py index 26a3bb15211..f2f04602b72 100755 --- a/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py +++ b/src/DIRAC/TransformationSystem/scripts/dirac_transformation_verify_outputdata.py @@ -1,27 +1,20 @@ #!/usr/bin/env python """ Runs checkTransformationIntegrity from ValidateOutputDataAgent on selected Tranformation - -Usage: - dirac-transformation-verify-outputdata transID [transID] [transID] """ - from __future__ import print_function from __future__ import absolute_import from __future__ import division + import sys -from DIRAC.Core.Base import Script from DIRAC.Core.Utilities.DIRACScript import DIRACScript @DIRACScript() def main(self): - self.parseCommandLine() - - args = self.getPositionalArgs() - if not args: - self.showHelp() + self.registerArgument(["transID: transformation ID"]) + _, args = self.parseCommandLine() transIDs = [int(arg) for arg in args] diff --git a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py index cd65cfd237d..9d315dd667e 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_kill_pilot.py @@ -5,27 +5,21 @@ ######################################################################## """ Kill the specified pilot - -Usage: - dirac-admin-kill-pilot """ 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 @DIRACScript() def main(self): - self.parseCommandLine(ignoreErrors=True) - args = self.getPositionalArgs() - - if len(args) < 1: - self.showHelp(exitCode=1) + self.registerArgument("PilotRef: pilot reference") + _, args = self.parseCommandLine(ignoreErrors=True) pilotRef = args[0] 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 90a5d855fa0..c9c34e36531 100755 --- a/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_pilot_logging_info.py +++ b/src/DIRAC/WorkloadManagementSystem/scripts/dirac_admin_pilot_logging_info.py @@ -2,62 +2,57 @@ """ Get Pilots Logging for specific Pilot UUID or Job ID. -Usage: - dirac-admin-pilot-loggin-info