DIRAC 9.0.0a69__py3-none-any.whl → 9.0.0a70__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. DIRAC/AccountingSystem/Client/Types/Network.py +8 -8
  2. DIRAC/AccountingSystem/Client/Types/PilotSubmission.py +3 -3
  3. DIRAC/ConfigurationSystem/Client/CSAPI.py +11 -1
  4. DIRAC/ConfigurationSystem/Client/Helpers/CSGlobals.py +0 -9
  5. DIRAC/ConfigurationSystem/Client/Helpers/Registry.py +3 -29
  6. DIRAC/ConfigurationSystem/Client/SyncPlugins/CERNLDAPSyncPlugin.py +4 -1
  7. DIRAC/ConfigurationSystem/ConfigTemplate.cfg +3 -0
  8. DIRAC/ConfigurationSystem/private/Modificator.py +11 -3
  9. DIRAC/ConfigurationSystem/private/RefresherBase.py +4 -2
  10. DIRAC/Core/DISET/ServiceReactor.py +11 -3
  11. DIRAC/Core/DISET/private/Transports/M2SSLTransport.py +9 -7
  12. DIRAC/Core/Security/DiracX.py +11 -6
  13. DIRAC/Core/Security/test/test_diracx_token_from_pem.py +161 -0
  14. DIRAC/Core/Tornado/Server/TornadoService.py +1 -1
  15. DIRAC/Core/Utilities/ElasticSearchDB.py +1 -2
  16. DIRAC/Core/Utilities/Subprocess.py +66 -57
  17. DIRAC/Core/Utilities/test/Test_Profiler.py +20 -20
  18. DIRAC/Core/Utilities/test/Test_Subprocess.py +58 -8
  19. DIRAC/Core/scripts/dirac_apptainer_exec.py +8 -8
  20. DIRAC/DataManagementSystem/Agent/FTS3Agent.py +8 -7
  21. DIRAC/DataManagementSystem/Client/DataManager.py +6 -7
  22. DIRAC/DataManagementSystem/Client/FTS3Job.py +125 -34
  23. DIRAC/DataManagementSystem/Client/test/Test_FTS3Objects.py +1 -0
  24. DIRAC/DataManagementSystem/Client/test/Test_scitag.py +69 -0
  25. DIRAC/DataManagementSystem/DB/FileCatalogComponents/DatasetManager/DatasetManager.py +1 -1
  26. DIRAC/DataManagementSystem/scripts/dirac_dms_create_moving_request.py +2 -0
  27. DIRAC/FrameworkSystem/DB/InstalledComponentsDB.py +3 -2
  28. DIRAC/FrameworkSystem/DB/ProxyDB.py +9 -5
  29. DIRAC/FrameworkSystem/Utilities/MonitoringUtilities.py +1 -0
  30. DIRAC/FrameworkSystem/Utilities/TokenManagementUtilities.py +3 -2
  31. DIRAC/FrameworkSystem/Utilities/diracx.py +41 -10
  32. DIRAC/FrameworkSystem/scripts/dirac_login.py +2 -2
  33. DIRAC/FrameworkSystem/scripts/dirac_proxy_init.py +1 -1
  34. DIRAC/FrameworkSystem/scripts/dirac_uninstall_component.py +1 -0
  35. DIRAC/Interfaces/API/Dirac.py +3 -6
  36. DIRAC/Interfaces/Utilities/DConfigCache.py +2 -0
  37. DIRAC/MonitoringSystem/DB/MonitoringDB.py +6 -5
  38. DIRAC/MonitoringSystem/Service/WebAppHandler.py +25 -6
  39. DIRAC/MonitoringSystem/private/MainReporter.py +0 -3
  40. DIRAC/RequestManagementSystem/Agent/RequestExecutingAgent.py +8 -6
  41. DIRAC/RequestManagementSystem/ConfigTemplate.cfg +6 -6
  42. DIRAC/ResourceStatusSystem/Command/FreeDiskSpaceCommand.py +3 -1
  43. DIRAC/Resources/Computing/AREXComputingElement.py +18 -2
  44. DIRAC/Resources/Computing/BatchSystems/Condor.py +0 -3
  45. DIRAC/Resources/Computing/BatchSystems/executeBatch.py +15 -7
  46. DIRAC/Resources/Computing/LocalComputingElement.py +0 -2
  47. DIRAC/Resources/Computing/SSHComputingElement.py +61 -38
  48. DIRAC/Resources/IdProvider/CheckInIdProvider.py +13 -0
  49. DIRAC/Resources/IdProvider/IdProviderFactory.py +13 -3
  50. DIRAC/Resources/IdProvider/tests/Test_IdProviderFactory.py +7 -0
  51. DIRAC/Resources/Storage/FileStorage.py +121 -2
  52. DIRAC/TransformationSystem/Agent/InputDataAgent.py +4 -1
  53. DIRAC/TransformationSystem/Agent/MCExtensionAgent.py +5 -2
  54. DIRAC/TransformationSystem/Agent/TaskManagerAgentBase.py +3 -4
  55. DIRAC/TransformationSystem/Agent/TransformationCleaningAgent.py +44 -9
  56. DIRAC/TransformationSystem/Agent/ValidateOutputDataAgent.py +4 -2
  57. DIRAC/TransformationSystem/Client/TransformationClient.py +9 -1
  58. DIRAC/TransformationSystem/Client/Utilities.py +6 -3
  59. DIRAC/TransformationSystem/DB/TransformationDB.py +105 -43
  60. DIRAC/TransformationSystem/Utilities/ReplicationCLIParameters.py +3 -3
  61. DIRAC/TransformationSystem/scripts/dirac_production_runjoblocal.py +2 -4
  62. DIRAC/TransformationSystem/test/Test_replicationTransformation.py +5 -6
  63. DIRAC/WorkloadManagementSystem/Agent/SiteDirector.py +8 -11
  64. DIRAC/WorkloadManagementSystem/Agent/StalledJobAgent.py +39 -7
  65. DIRAC/WorkloadManagementSystem/Agent/test/Test_Agent_SiteDirector.py +8 -2
  66. DIRAC/WorkloadManagementSystem/Agent/test/Test_Agent_StalledJobAgent.py +24 -4
  67. DIRAC/WorkloadManagementSystem/Client/DownloadInputData.py +4 -3
  68. DIRAC/WorkloadManagementSystem/ConfigTemplate.cfg +3 -3
  69. DIRAC/WorkloadManagementSystem/DB/JobParametersDB.py +8 -8
  70. DIRAC/WorkloadManagementSystem/DB/SandboxMetadataDB.py +1 -1
  71. DIRAC/WorkloadManagementSystem/DB/StatusUtils.py +48 -21
  72. DIRAC/WorkloadManagementSystem/DB/tests/Test_StatusUtils.py +19 -4
  73. DIRAC/WorkloadManagementSystem/JobWrapper/JobWrapper.py +3 -4
  74. DIRAC/WorkloadManagementSystem/JobWrapper/Watchdog.py +16 -45
  75. DIRAC/WorkloadManagementSystem/JobWrapper/test/Test_JobWrapper.py +18 -9
  76. DIRAC/WorkloadManagementSystem/Service/JobManagerHandler.py +25 -2
  77. DIRAC/WorkloadManagementSystem/Service/WMSAdministratorHandler.py +18 -31
  78. DIRAC/WorkloadManagementSystem/Utilities/PilotCStoJSONSynchronizer.py +4 -1
  79. {dirac-9.0.0a69.dist-info → dirac-9.0.0a70.dist-info}/METADATA +6 -5
  80. {dirac-9.0.0a69.dist-info → dirac-9.0.0a70.dist-info}/RECORD +84 -82
  81. {dirac-9.0.0a69.dist-info → dirac-9.0.0a70.dist-info}/WHEEL +0 -0
  82. {dirac-9.0.0a69.dist-info → dirac-9.0.0a70.dist-info}/entry_points.txt +0 -0
  83. {dirac-9.0.0a69.dist-info → dirac-9.0.0a70.dist-info}/licenses/LICENSE +0 -0
  84. {dirac-9.0.0a69.dist-info → dirac-9.0.0a70.dist-info}/top_level.txt +0 -0
@@ -150,37 +150,24 @@ class WMSAdministratorHandlerMixin:
150
150
  :param str jobID: job ID
151
151
  :return: S_OK(dict)/S_ERROR()
152
152
  """
153
- pilotReference = ""
154
- # Get the pilot grid reference first from the job parameters
155
-
156
- credDict = self.getRemoteCredentials()
157
- vo = credDict.get("VO", Registry.getVOForGroup(credDict["group"]))
158
- res = self.elasticJobParametersDB.getJobParameters(int(jobID), vo=vo, paramList=["Pilot_Reference"])
159
- if not res["OK"]:
160
- return res
161
- if res["Value"].get(int(jobID)):
162
- pilotReference = res["Value"][int(jobID)]["Pilot_Reference"]
163
-
164
- if not pilotReference:
165
- res = self.jobDB.getJobParameter(int(jobID), "Pilot_Reference")
166
- if not res["OK"]:
167
- return res
168
- pilotReference = res["Value"]
169
-
170
- if not pilotReference:
171
- # Failed to get the pilot reference, try to look in the attic parameters
172
- res = self.jobDB.getAtticJobParameters(int(jobID), ["Pilot_Reference"])
173
- if res["OK"]:
174
- c = -1
175
- # Get the pilot reference for the last rescheduling cycle
176
- for cycle in res["Value"]:
177
- if cycle > c:
178
- pilotReference = res["Value"][cycle]["Pilot_Reference"]
179
- c = cycle
180
-
181
- if pilotReference:
182
- return self.pilotManager.getPilotOutput(pilotReference)
183
- return S_ERROR("No pilot job reference found")
153
+ result = self.pilotManager.getPilots(jobID)
154
+
155
+ if not result["OK"]:
156
+ return result
157
+ pilotJobReferences = result["Value"].keys()
158
+
159
+ outputs = {"StdOut": "", "StdErr": ""}
160
+ for pilotRef in pilotJobReferences:
161
+ result = self.pilotManager.getPilotOutput(pilotRef)
162
+ if not result["OK"]:
163
+ stdout = f"Could not retrieve output: {result['Message']}"
164
+ error = f"Could not retrieve error: {result['Message']}"
165
+ else:
166
+ stdout, error = result["Value"]["StdOut"], result["Value"]["StdErr"]
167
+ outputs["StdOut"] += f"# PilotJobReference: {pilotRef}\n\n{stdout}\n"
168
+ outputs["StdErr"] += f"# PilotJobReference: {pilotRef}\n\n{error}\n"
169
+
170
+ return S_OK(outputs)
184
171
 
185
172
 
186
173
  class WMSAdministratorHandler(WMSAdministratorHandlerMixin, RequestHandler):
@@ -11,7 +11,6 @@ import os
11
11
  import shutil
12
12
  import tarfile
13
13
  from typing import Any
14
-
15
14
  from git import Repo
16
15
 
17
16
  from DIRAC import S_OK, gConfig, gLogger
@@ -217,6 +216,10 @@ class PilotCStoJSONSynchronizer:
217
216
 
218
217
  pilotDict["ConfigurationServers"] = configurationServers
219
218
 
219
+ preferredURLPatterns = gConfigurationData.extractOptionFromCFG("/DIRAC/PreferredURLPatterns")
220
+ if preferredURLPatterns:
221
+ pilotDict["PreferredURLPatterns"] = preferredURLPatterns.replace(" ", "").split(",")
222
+
220
223
  self.log.debug("Got pilotDict", str(pilotDict))
221
224
 
222
225
  return S_OK(pilotDict)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: DIRAC
3
- Version: 9.0.0a69
3
+ Version: 9.0.0a70
4
4
  Summary: DIRAC is an interware, meaning a software framework for distributed computing.
5
5
  Home-page: https://github.com/DIRACGrid/DIRAC/
6
6
  License: GPL-3.0-only
@@ -19,9 +19,10 @@ Requires-Dist: cachetools
19
19
  Requires-Dist: certifi
20
20
  Requires-Dist: cwltool
21
21
  Requires-Dist: diraccfg
22
- Requires-Dist: DIRACCommon==v9.0.0a69
23
- Requires-Dist: diracx-client>=v0.0.1a18
24
- Requires-Dist: diracx-core>=v0.0.1a18
22
+ Requires-Dist: DIRACCommon==v9.0.0a70
23
+ Requires-Dist: diracx-client>=v0.0.1
24
+ Requires-Dist: diracx-core>=v0.0.1
25
+ Requires-Dist: diracx-cli>=v0.0.1
25
26
  Requires-Dist: db12
26
27
  Requires-Dist: fts3
27
28
  Requires-Dist: gfal2-python
@@ -40,13 +41,13 @@ Requires-Dist: python-dateutil
40
41
  Requires-Dist: pytz
41
42
  Requires-Dist: requests
42
43
  Requires-Dist: rucio-clients>=34.4.2
43
- Requires-Dist: setuptools
44
44
  Requires-Dist: sqlalchemy
45
45
  Requires-Dist: typing_extensions>=4.3.0
46
46
  Requires-Dist: Authlib>=1.0.0.a2
47
47
  Requires-Dist: pyjwt
48
48
  Requires-Dist: dominate
49
49
  Requires-Dist: zstandard
50
+ Requires-Dist: xattr
50
51
  Provides-Extra: server
51
52
  Requires-Dist: CMRESHandler; extra == "server"
52
53
  Requires-Dist: opensearch-py; extra == "server"