panda-server 0.3.1__tar.gz → 0.3.3__tar.gz

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 (212) hide show
  1. {panda_server-0.3.1 → panda_server-0.3.3}/Dockerfile +6 -1
  2. {panda_server-0.3.1 → panda_server-0.3.3}/PKG-INFO +1 -1
  3. panda_server-0.3.3/PandaPkgInfo.py +1 -0
  4. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/brokerage/broker.py +2 -2
  5. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/datasetManager.py +14 -14
  6. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/evpPD2P.py +1 -1
  7. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/AdderAtlasPlugin.py +7 -7
  8. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/AdderSimplePlugin.py +2 -2
  9. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/RecoverLostFilesCore.py +1 -1
  10. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/SetupperAtlasPlugin.py +22 -23
  11. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/closer.py +16 -24
  12. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/closer_atlas_plugin.py +2 -2
  13. panda_server-0.3.3/pandaserver/dataservice/ddm.py +921 -0
  14. panda_server-0.3.3/pandaserver/dataservice/ddm_handler.py +95 -0
  15. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/dyn_data_distributer.py +22 -27
  16. panda_server-0.3.3/pandaserver/dataservice/event_lookup_client_ei.py +77 -0
  17. panda_server-0.3.3/pandaserver/dataservice/event_picker.py +263 -0
  18. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/jobdispatcher/JobDispatcher.py +6 -5
  19. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/jobdispatcher/Protocol.py +1 -1
  20. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/jobdispatcher/Watcher.py +1 -2
  21. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/OraDBProxy.py +7 -5
  22. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/TaskBuffer.py +2 -2
  23. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/task_split_rules.py +33 -6
  24. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/reloadInputDS.py +1 -1
  25. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/userinterface/UserIF.py +1 -1
  26. {panda_server-0.3.1 → panda_server-0.3.3}/templates/panda_server-httpd-FastCGI.conf.rpmnew.template +7 -3
  27. {panda_server-0.3.1 → panda_server-0.3.3}/templates/sysconfig/panda_server.sysconfig.rpmnew.template +22 -2
  28. panda_server-0.3.1/PandaPkgInfo.py +0 -1
  29. panda_server-0.3.1/pandaserver/dataservice/DDM.py +0 -709
  30. panda_server-0.3.1/pandaserver/dataservice/DDMHandler.py +0 -51
  31. panda_server-0.3.1/pandaserver/dataservice/EventPicker.py +0 -373
  32. panda_server-0.3.1/pandaserver/dataservice/eventLookupClientEI.py +0 -57
  33. {panda_server-0.3.1 → panda_server-0.3.3}/.pre-commit-config.yaml +0 -0
  34. {panda_server-0.3.1 → panda_server-0.3.3}/ChangeLog.txt +0 -0
  35. {panda_server-0.3.1 → panda_server-0.3.3}/INSTALL.md +0 -0
  36. {panda_server-0.3.1 → panda_server-0.3.3}/INSTALL_ATLAS.md +0 -0
  37. {panda_server-0.3.1 → panda_server-0.3.3}/LICENSE.txt +0 -0
  38. {panda_server-0.3.1 → panda_server-0.3.3}/MANIFEST.in +0 -0
  39. {panda_server-0.3.1 → panda_server-0.3.3}/README.md +0 -0
  40. {panda_server-0.3.1 → panda_server-0.3.3}/package/hatch_build.py +0 -0
  41. {panda_server-0.3.1 → panda_server-0.3.3}/panda-server.spec +0 -0
  42. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/__init__.py +0 -0
  43. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/brokerage/ErrorCode.py +0 -0
  44. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/brokerage/SiteMapper.py +0 -0
  45. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/brokerage/__init__.py +0 -0
  46. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/config/__init__.py +0 -0
  47. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/config/config_utils.py +0 -0
  48. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/config/daemon_config.py +0 -0
  49. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/config/panda_config.py +0 -0
  50. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/configurator/Carbon.py +0 -0
  51. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/configurator/Configurator.py +0 -0
  52. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/configurator/__init__.py +0 -0
  53. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/configurator/aux.py +0 -0
  54. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/__init__.py +0 -0
  55. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/master.py +0 -0
  56. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/master_systemd.py +0 -0
  57. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/__init__.py +0 -0
  58. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/add_main.py +0 -0
  59. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/add_sub.py +0 -0
  60. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/cache_pilots.py +0 -0
  61. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/cache_schedconfig.py +0 -0
  62. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/carbon.py +0 -0
  63. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/configurator.py +0 -0
  64. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/copyArchive.py +0 -0
  65. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/dummy_test.py +0 -0
  66. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/metric_collector.py +0 -0
  67. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/panda_activeusers_query.py +0 -0
  68. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/pilotStreaming.py +0 -0
  69. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/process_workflow_files_daemon.py +0 -0
  70. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/recover_lost_files_daemon.py +0 -0
  71. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/task_evaluator.py +0 -0
  72. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/tmpwatch.py +0 -0
  73. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/scripts/worker_synchronization.py +0 -0
  74. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/daemons/utils.py +0 -0
  75. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/AdderDummyPlugin.py +0 -0
  76. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/AdderGen.py +0 -0
  77. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/AdderPluginBase.py +0 -0
  78. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/AdderResult.py +0 -0
  79. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/DataServiceUtils.py +0 -0
  80. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/ErrorCode.py +0 -0
  81. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/ProcessLimiter.py +0 -0
  82. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/Setupper.py +0 -0
  83. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/SetupperDummyPlugin.py +0 -0
  84. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/SetupperPluginBase.py +0 -0
  85. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/__init__.py +0 -0
  86. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/activator.py +0 -0
  87. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/finisher.py +0 -0
  88. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/dataservice/forkSetupper.py +0 -0
  89. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/jobdispatcher/DispatcherUtils.py +0 -0
  90. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/jobdispatcher/ErrorCode.py +0 -0
  91. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/jobdispatcher/__init__.py +0 -0
  92. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/proxycache/__init__.py +0 -0
  93. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/proxycache/panda_proxy_cache.py +0 -0
  94. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/server/.gacl +0 -0
  95. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/server/panda.py +0 -0
  96. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/srvcore/CoreUtils.py +0 -0
  97. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/srvcore/MailUtils.py +0 -0
  98. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/srvcore/__init__.py +0 -0
  99. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/srvcore/allowed_methods.py +0 -0
  100. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/srvcore/oidc_utils.py +0 -0
  101. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/srvcore/panda_request.py +0 -0
  102. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/srvcore/srv_msg_utils.py +0 -0
  103. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/CloudSpec.py +0 -0
  104. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/CloudTaskSpec.py +0 -0
  105. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/ConBridge.py +0 -0
  106. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/DBProxyPool.py +0 -0
  107. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/DatasetSpec.py +0 -0
  108. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/DdmSpec.py +0 -0
  109. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/ErrorCode.py +0 -0
  110. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/EventServiceUtils.py +0 -0
  111. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/FileSpec.py +0 -0
  112. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/GlobalShares.py +0 -0
  113. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/HarvesterMetricsSpec.py +0 -0
  114. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/Initializer.py +0 -0
  115. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/JobSpec.py +0 -0
  116. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/JobUtils.py +0 -0
  117. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/NucleusSpec.py +0 -0
  118. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/PanDAMsgProcessor.py +0 -0
  119. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/PandaDBSchemaInfo.py +0 -0
  120. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/PickleFileSpec.py +0 -0
  121. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/PickleJobSpec.py +0 -0
  122. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/PrioUtil.py +0 -0
  123. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/ProcessGroups.py +0 -0
  124. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/ResourceSpec.py +0 -0
  125. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/SQLDumper.py +0 -0
  126. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/SQLManager.py +0 -0
  127. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/SiteSpec.py +0 -0
  128. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/SupErrors.py +0 -0
  129. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/TaskBufferInterface.py +0 -0
  130. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/Utils.py +0 -0
  131. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/WorkerSpec.py +0 -0
  132. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/WrappedCursor.py +0 -0
  133. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/WrappedPickle.py +0 -0
  134. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/WrappedPostgresConn.py +0 -0
  135. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/__init__.py +0 -0
  136. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/retryModule.py +0 -0
  137. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/taskbuffer/workflow_processor.py +0 -0
  138. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/SchemaChecker.py +0 -0
  139. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/__init__.py +0 -0
  140. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/alice/README.txt +0 -0
  141. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/alice/mysetup +0 -0
  142. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/alice/titan_testScript_ec2_alice_1.py +0 -0
  143. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/alice/titan_testScript_ec2_alice_2.py +0 -0
  144. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/banUser.py +0 -0
  145. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/boostPrio.py +0 -0
  146. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/boostUser.py +0 -0
  147. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/callbackDDM.py +0 -0
  148. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/daod_on_demand.py +0 -0
  149. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/finishJob.py +0 -0
  150. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/finishTaskJEDI.py +0 -0
  151. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/getJobs.py +0 -0
  152. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/killJob.py +0 -0
  153. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/killJobLowPrio.py +0 -0
  154. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/killJobsInTask.py +0 -0
  155. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/killProdJobs.py +0 -0
  156. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/killTask.py +0 -0
  157. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/killTaskJEDI.py +0 -0
  158. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/killUser.py +0 -0
  159. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/lsst/README.txt +0 -0
  160. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/lsst/lsstSubmit.py +0 -0
  161. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/lsst/lsstSubmitMERGEtest.py +0 -0
  162. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/lsst/lsstSubmitPhosim332.py +0 -0
  163. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/lsst/prepare-client-tarball-from-bigpanda-server.sh +0 -0
  164. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/reassignJobs.py +0 -0
  165. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/reassignSite.py +0 -0
  166. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/reassignTask.py +0 -0
  167. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/reassignWaiting.py +0 -0
  168. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/recoverLostFiles.py +0 -0
  169. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/sendCommandToJob.py +0 -0
  170. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/setDebugMode.py +0 -0
  171. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/setPriority.py +0 -0
  172. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/testEvgen.py +0 -0
  173. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/testEvgen17.py +0 -0
  174. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/testG4sim.py +0 -0
  175. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/testG4sim17.py +0 -0
  176. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/testGetCriteriaForGlobalShares.py +0 -0
  177. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/testGlobalShares.py +0 -0
  178. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/testJobFlowATLAS.py +0 -0
  179. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/testReco.py +0 -0
  180. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/testSimulReco14.py +0 -0
  181. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/testSiteMap.py +0 -0
  182. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/testUpdateWorkerPilotStatus.py +0 -0
  183. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/test/testutils.py +0 -0
  184. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/userinterface/Client.py +0 -0
  185. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/userinterface/__init__.py +0 -0
  186. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/workflow/__init__.py +0 -0
  187. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/workflow/pcwl_test.py +0 -0
  188. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/workflow/pcwl_utils.py +0 -0
  189. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/workflow/psnakemake_container.json +0 -0
  190. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/workflow/psnakemake_task.json +0 -0
  191. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/workflow/psnakemake_test.py +0 -0
  192. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/workflow/snakeparser/__init__.py +0 -0
  193. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/workflow/snakeparser/extensions.py +0 -0
  194. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/workflow/snakeparser/log.py +0 -0
  195. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/workflow/snakeparser/names.py +0 -0
  196. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/workflow/snakeparser/parser.py +0 -0
  197. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/workflow/snakeparser/utils.py +0 -0
  198. {panda_server-0.3.1 → panda_server-0.3.3}/pandaserver/workflow/workflow_utils.py +0 -0
  199. {panda_server-0.3.1 → panda_server-0.3.3}/pyproject.toml +0 -0
  200. {panda_server-0.3.1 → panda_server-0.3.3}/templates/bin/panda_server-makeSlsXml.exe.template +0 -0
  201. {panda_server-0.3.1 → panda_server-0.3.3}/templates/bin/panda_server-vomsrenew.exe.template +0 -0
  202. {panda_server-0.3.1 → panda_server-0.3.3}/templates/conda_meta.yaml.template +0 -0
  203. {panda_server-0.3.1 → panda_server-0.3.3}/templates/init.d/panda_daemon.exe.template +0 -0
  204. {panda_server-0.3.1 → panda_server-0.3.3}/templates/init.d/panda_httpd.exe.template +0 -0
  205. {panda_server-0.3.1 → panda_server-0.3.3}/templates/init.d/panda_server.exe.template +0 -0
  206. {panda_server-0.3.1 → panda_server-0.3.3}/templates/logrotate.d/panda_server.logrotate.template +0 -0
  207. {panda_server-0.3.1 → panda_server-0.3.3}/templates/panda_server-httpd.conf.rpmnew.template +0 -0
  208. {panda_server-0.3.1 → panda_server-0.3.3}/templates/panda_server.cfg.rpmnew.template +0 -0
  209. {panda_server-0.3.1 → panda_server-0.3.3}/templates/sysconfig/panda_server_env.systemd.rpmnew.template +0 -0
  210. {panda_server-0.3.1 → panda_server-0.3.3}/templates/systemd/panda.service.template +0 -0
  211. {panda_server-0.3.1 → panda_server-0.3.3}/templates/systemd/panda_daemon.service.template +0 -0
  212. {panda_server-0.3.1 → panda_server-0.3.3}/templates/systemd/panda_httpd.service.template +0 -0
@@ -8,7 +8,7 @@ RUN yum update -y
8
8
  RUN yum install -y epel-release
9
9
 
10
10
  RUN yum install -y httpd httpd-devel gcc gridsite git psmisc less wget logrotate procps which \
11
- openssl-devel readline-devel bzip2-devel libffi-devel zlib-devel
11
+ openssl-devel readline-devel bzip2-devel libffi-devel zlib-devel systemd-udev
12
12
 
13
13
  # install python
14
14
  RUN mkdir /tmp/python && cd /tmp/python && \
@@ -25,6 +25,11 @@ RUN yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x
25
25
  RUN yum install --nogpgcheck -y postgresql16
26
26
  RUN yum clean all && rm -rf /var/cache/yum
27
27
 
28
+ # update network limitations
29
+ # RUN echo 4096 > /proc/sys/net/core/somaxconn
30
+ # RUN sysctl -w net.core.somaxconn=4096
31
+ RUN echo 'net.core.somaxconn=4096' >> /etc/sysctl.d/999-net.somax.conf
32
+
28
33
  # setup venv with pythonX.Y
29
34
  RUN python$(echo ${PYTHON_VERSION} | sed -E 's/\.[0-9]+$//') -m venv /opt/panda
30
35
  RUN /opt/panda/bin/pip install --no-cache-dir -U pip
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: panda-server
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Summary: PanDA Server Package
5
5
  Project-URL: Homepage, https://panda-wms.readthedocs.io/en/latest/
6
6
  Author-email: PanDA Team <panda-support@cern.ch>
@@ -0,0 +1 @@
1
+ release_version = "0.3.3"
@@ -12,7 +12,7 @@ from pandaserver.brokerage import ErrorCode
12
12
  from pandaserver.config import panda_config
13
13
  from pandaserver.dataservice import DataServiceUtils
14
14
  from pandaserver.dataservice.DataServiceUtils import select_scope
15
- from pandaserver.dataservice.DDM import rucioAPI
15
+ from pandaserver.dataservice.ddm import rucioAPI
16
16
  from pandaserver.taskbuffer import ProcessGroups
17
17
 
18
18
  _log = PandaLogger().getLogger("broker")
@@ -99,7 +99,7 @@ def _getOkFiles(
99
99
  # get all replicas
100
100
  if rucio_url not in allOkFilesMap:
101
101
  allOkFilesMap[rucio_url] = {}
102
- tmpStat, tmpAvaFiles = rucioAPI.listFileReplicas(allScopeList, allLFNs, tmpSE)
102
+ tmpStat, tmpAvaFiles = rucioAPI.list_file_replicas(allScopeList, allLFNs, tmpSE)
103
103
  if not tmpStat and tmpLog is not None:
104
104
  tmpLog.debug("getOkFile failed to get file replicas")
105
105
  tmpAvaFiles = {}
@@ -14,7 +14,7 @@ from pandaserver.config import panda_config
14
14
  from pandaserver.dataservice import DataServiceUtils
15
15
  from pandaserver.dataservice.closer import Closer
16
16
  from pandaserver.dataservice.DataServiceUtils import select_scope
17
- from pandaserver.dataservice.DDM import rucioAPI
17
+ from pandaserver.dataservice.ddm import rucioAPI
18
18
  from pandaserver.dataservice.finisher import Finisher
19
19
  from pandaserver.taskbuffer import EventServiceUtils
20
20
 
@@ -198,11 +198,11 @@ def main(tbuf=None, **kwargs):
198
198
  dsExists = False
199
199
  if dsExists:
200
200
  # check if dataset exists
201
- status, out = rucioAPI.getMetaData(name)
201
+ status, out = rucioAPI.get_metadata(name)
202
202
  if status is True:
203
203
  if out is not None:
204
204
  try:
205
- rucioAPI.closeDataset(name)
205
+ rucioAPI.close_dataset(name)
206
206
  status = True
207
207
  except Exception:
208
208
  errtype, errvalue = sys.exc_info()[:2]
@@ -233,7 +233,7 @@ def main(tbuf=None, **kwargs):
233
233
  if not dsExists:
234
234
  continue
235
235
  # count # of files
236
- status, out = rucioAPI.getNumberOfFiles(name)
236
+ status, out = rucioAPI.get_number_of_files(name)
237
237
  if status is not True:
238
238
  if status is False:
239
239
  _logger.error(out)
@@ -244,7 +244,7 @@ def main(tbuf=None, **kwargs):
244
244
  if nFile == 0:
245
245
  # erase dataset
246
246
  _logger.debug(f"erase {name}")
247
- status, out = rucioAPI.eraseDataset(name)
247
+ status, out = rucioAPI.erase_dataset(name)
248
248
  _logger.debug(f"OK with {name}")
249
249
  except Exception:
250
250
  pass
@@ -401,11 +401,11 @@ def main(tbuf=None, **kwargs):
401
401
  status, out = True, ""
402
402
  elif dsExists:
403
403
  # check if dataset exists
404
- status, out = rucioAPI.getMetaData(name)
404
+ status, out = rucioAPI.get_metadata(name)
405
405
  if status is True:
406
406
  if out is not None:
407
407
  try:
408
- rucioAPI.closeDataset(name)
408
+ rucioAPI.close_dataset(name)
409
409
  status = True
410
410
  except Exception:
411
411
  errtype, errvalue = sys.exc_info()[:2]
@@ -434,7 +434,7 @@ def main(tbuf=None, **kwargs):
434
434
  # set tobedeleted to dis
435
435
  setTobeDeletedToDis(name)
436
436
  # count # of files
437
- status, out = rucioAPI.getNumberOfFiles(name)
437
+ status, out = rucioAPI.get_number_of_files(name)
438
438
  if status is not True:
439
439
  if status is False:
440
440
  _logger.error(out)
@@ -446,7 +446,7 @@ def main(tbuf=None, **kwargs):
446
446
  if nFile == 0:
447
447
  # erase dataset
448
448
  _logger.debug(f"erase {name}")
449
- status, out = rucioAPI.eraseDataset(name)
449
+ status, out = rucioAPI.erase_dataset(name)
450
450
  _logger.debug(f"OK with {name}")
451
451
  except Exception:
452
452
  pass
@@ -567,7 +567,7 @@ def main(tbuf=None, **kwargs):
567
567
  _logger.debug(f"Eraser {self.operationType} dis {modDate} {name}")
568
568
  # delete or shorten
569
569
  endStatus = "deleted"
570
- status, out = rucioAPI.eraseDataset(name)
570
+ status, out = rucioAPI.erase_dataset(name)
571
571
  if not status:
572
572
  _logger.error(out)
573
573
  continue
@@ -699,7 +699,7 @@ def main(tbuf=None, **kwargs):
699
699
  nTokens += len(file.destinationDBlockToken.split(","))
700
700
  # get files in LRC
701
701
  _logger.debug(f"{job.PandaID} Cloud:{job.cloud}")
702
- tmpStat, okFiles = rucioAPI.listFileReplicas(scopes, lfns, seList)
702
+ tmpStat, okFiles = rucioAPI.list_file_replicas(scopes, lfns, seList)
703
703
  if not tmpStat:
704
704
  _logger.error(f"{job.PandaID} failed to get file replicas")
705
705
  okFiles = {}
@@ -852,7 +852,7 @@ def main(tbuf=None, **kwargs):
852
852
  scopes.append(tmpFile.scope)
853
853
  # get file replicas
854
854
  _logger.debug(f"{tmpJob.PandaID} check input files at {tmpJob.computingSite}")
855
- tmpStat, okFiles = rucioAPI.listFileReplicas(scopes, lfns)
855
+ tmpStat, okFiles = rucioAPI.list_file_replicas(scopes, lfns)
856
856
  if not tmpStat:
857
857
  pass
858
858
  else:
@@ -955,7 +955,7 @@ def main(tbuf=None, **kwargs):
955
955
  if tmpFile.type == "input" and tmpFile.status != "ready":
956
956
  # get replicas
957
957
  if tmpFile.dispatchDBlock not in replicaMap:
958
- tmpStat, repMap = rucioAPI.listDatasetReplicas(tmpFile.dispatchDBlock)
958
+ tmpStat, repMap = rucioAPI.list_dataset_replicas(tmpFile.dispatchDBlock)
959
959
  if tmpStat != 0:
960
960
  repMap = {}
961
961
  replicaMap[tmpFile.dispatchDBlock] = repMap
@@ -1088,7 +1088,7 @@ def main(tbuf=None, **kwargs):
1088
1088
  if allDone:
1089
1089
  _logger.debug(f"deleting sub {name}")
1090
1090
  try:
1091
- rucioAPI.eraseDataset(name, grace_period=4)
1091
+ rucioAPI.erase_dataset(name, grace_period=4)
1092
1092
  status = True
1093
1093
  except Exception:
1094
1094
  errtype, errvalue = sys.exc_info()[:2]
@@ -9,7 +9,7 @@ from pandacommon.pandalogger.PandaLogger import PandaLogger
9
9
  from pandacommon.pandautils.thread_utils import GenericThread
10
10
  from pandaserver.brokerage import SiteMapper
11
11
  from pandaserver.config import panda_config
12
- from pandaserver.dataservice.EventPicker import EventPicker
12
+ from pandaserver.dataservice.event_picker import EventPicker
13
13
 
14
14
  # logger
15
15
  _logger = PandaLogger().getLogger("evpPD2P")
@@ -15,7 +15,7 @@ from pandaserver.config import panda_config
15
15
  from pandaserver.dataservice import DataServiceUtils, ErrorCode
16
16
  from pandaserver.dataservice.AdderPluginBase import AdderPluginBase
17
17
  from pandaserver.dataservice.DataServiceUtils import select_scope
18
- from pandaserver.dataservice.DDM import rucioAPI
18
+ from pandaserver.dataservice.ddm import rucioAPI
19
19
  from pandaserver.srvcore.MailUtils import MailUtils
20
20
  from pandaserver.taskbuffer import EventServiceUtils, JobUtils
21
21
  from rucio.common.exception import (
@@ -616,9 +616,9 @@ class AdderAtlasPlugin(AdderPluginBase):
616
616
  regMsgStr = f"File registration with backend={self.ddmBackEnd} for {regNumFiles} files "
617
617
  if len(zipFiles) > 0:
618
618
  self.logger.debug(f"registerZipFiles {str(zipFiles)}")
619
- rucioAPI.registerZipFiles(zipFiles)
619
+ rucioAPI.register_zip_files(zipFiles)
620
620
  self.logger.debug(f"registerFilesInDatasets {str(destIdMap)} zip={str(contZipMap)}")
621
- out = rucioAPI.registerFilesInDataset(destIdMap, contZipMap)
621
+ out = rucioAPI.register_files_in_dataset(destIdMap, contZipMap)
622
622
  except (
623
623
  DataIdentifierNotFound,
624
624
  FileConsistencyMismatch,
@@ -709,7 +709,7 @@ class AdderAtlasPlugin(AdderPluginBase):
709
709
  for iDDMTry in range(3):
710
710
  isFailed = False
711
711
  try:
712
- status = rucioAPI.registerDatasetSubscription(
712
+ status = rucioAPI.register_dataset_subscription(
713
713
  tmpName,
714
714
  [dq2ID],
715
715
  owner="panda",
@@ -763,7 +763,7 @@ class AdderAtlasPlugin(AdderPluginBase):
763
763
  out = "OK"
764
764
  isFailed = False
765
765
  try:
766
- rucioAPI.registerDatasetLocation(
766
+ rucioAPI.register_dataset_location(
767
767
  tmpDsNameLoc,
768
768
  [tmpLocName],
769
769
  owner="panda",
@@ -854,7 +854,7 @@ class AdderAtlasPlugin(AdderPluginBase):
854
854
  tmpDN = userInfo["nickname"]
855
855
  tmpMsg = f"registerDatasetLocation for Rucio ds={tmpDsName} site={tmpDQ2ID} id={tmpDN}"
856
856
  self.logger.debug(tmpMsg)
857
- rucioAPI.registerDatasetLocation(
857
+ rucioAPI.register_dataset_location(
858
858
  tmpDsName,
859
859
  [tmpDQ2ID],
860
860
  owner=tmpDN,
@@ -997,7 +997,7 @@ class AdderAtlasPlugin(AdderPluginBase):
997
997
  if idMap != {}:
998
998
  self.logger.debug(f"adding ES files {str(idMap)}")
999
999
  try:
1000
- rucioAPI.registerFilesInDataset(idMap)
1000
+ rucioAPI.register_files_in_dataset(idMap)
1001
1001
  except DataIdentifierNotFound:
1002
1002
  self.logger.debug("ignored DataIdentifierNotFound")
1003
1003
  except Exception:
@@ -6,7 +6,7 @@ import traceback
6
6
  import uuid
7
7
 
8
8
  from pandaserver.dataservice import DataServiceUtils, ErrorCode
9
- from pandaserver.dataservice.DDM import rucioAPI
9
+ from pandaserver.dataservice.ddm import rucioAPI
10
10
  from rucio.common.exception import (
11
11
  DataIdentifierNotFound,
12
12
  FileConsistencyMismatch,
@@ -73,7 +73,7 @@ class AdderSimplePlugin(AdderPluginBase):
73
73
  regStart = datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None)
74
74
  try:
75
75
  self.logger.debug(f"registerFilesInDatasets {str(destIdMap)}")
76
- out = rucioAPI.registerFilesInDataset(destIdMap, {})
76
+ out = rucioAPI.register_files_in_dataset(destIdMap, {})
77
77
  except (
78
78
  DataIdentifierNotFound,
79
79
  FileConsistencyMismatch,
@@ -3,7 +3,7 @@ import sys
3
3
 
4
4
  from pandacommon.pandautils.thread_utils import GenericThread
5
5
  from pandaserver.config import panda_config
6
- from pandaserver.dataservice.DDM import rucioAPI
6
+ from pandaserver.dataservice.ddm import rucioAPI
7
7
  from pandaserver.userinterface import Client
8
8
  from rucio.client import Client as RucioClient
9
9
  from rucio.common.exception import DataIdentifierNotFound
@@ -15,7 +15,7 @@ from pandaserver.brokerage.SiteMapper import SiteMapper
15
15
  from pandaserver.config import panda_config
16
16
  from pandaserver.dataservice import DataServiceUtils, ErrorCode
17
17
  from pandaserver.dataservice.DataServiceUtils import select_scope
18
- from pandaserver.dataservice.DDM import rucioAPI
18
+ from pandaserver.dataservice.ddm import rucioAPI
19
19
  from pandaserver.dataservice.SetupperPluginBase import SetupperPluginBase
20
20
  from pandaserver.taskbuffer import EventServiceUtils, JobUtils
21
21
  from pandaserver.taskbuffer.DatasetSpec import DatasetSpec
@@ -226,7 +226,7 @@ class SetupperAtlasPlugin(SetupperPluginBase):
226
226
  self.logger.debug("listDatasets " + job.prodDBlock)
227
227
  prodError[job.prodDBlock] = ""
228
228
  for iDDMTry in range(3):
229
- newOut, errMsg = rucioAPI.listDatasets(job.prodDBlock)
229
+ newOut, errMsg = rucioAPI.list_datasets(job.prodDBlock)
230
230
  if newOut is None:
231
231
  time.sleep(10)
232
232
  else:
@@ -352,7 +352,7 @@ class SetupperAtlasPlugin(SetupperPluginBase):
352
352
  disFiles = fileList[dispatchDBlock]
353
353
  else:
354
354
  dids = fileList[dispatchDBlock]["lfns"]
355
- tmpZipStat, tmpZipOut = rucioAPI.getZipFiles(dids, None)
355
+ tmpZipStat, tmpZipOut = rucioAPI.get_zip_files(dids, None)
356
356
  if not tmpZipStat:
357
357
  self.logger.debug(f"failed to get zip files : {tmpZipOut}")
358
358
  tmpZipOut = {}
@@ -391,7 +391,7 @@ class SetupperAtlasPlugin(SetupperPluginBase):
391
391
  errStr = ""
392
392
  for iDDMTry in range(nDDMTry):
393
393
  try:
394
- out = rucioAPI.registerDataset(
394
+ out = rucioAPI.register_dataset(
395
395
  dispatchDBlock,
396
396
  disFiles["lfns"],
397
397
  disFiles["guids"],
@@ -421,7 +421,7 @@ class SetupperAtlasPlugin(SetupperPluginBase):
421
421
  for iDDMTry in range(3):
422
422
  status = False
423
423
  try:
424
- rucioAPI.closeDataset(dispatchDBlock)
424
+ rucioAPI.close_dataset(dispatchDBlock)
425
425
  status = True
426
426
  break
427
427
  except Exception:
@@ -632,7 +632,7 @@ class SetupperAtlasPlugin(SetupperPluginBase):
632
632
  isOK = False
633
633
  for iDDMTry in range(3):
634
634
  try:
635
- out = rucioAPI.registerDataset(
635
+ out = rucioAPI.register_dataset(
636
636
  name,
637
637
  metadata=tmpMetadata,
638
638
  lifetime=tmpLifeTime,
@@ -702,7 +702,7 @@ class SetupperAtlasPlugin(SetupperPluginBase):
702
702
  break
703
703
  for iDDMTry in range(3):
704
704
  try:
705
- out = rucioAPI.registerDatasetLocation(
705
+ out = rucioAPI.register_dataset_location(
706
706
  name,
707
707
  [dq2ID],
708
708
  lifetime=repLifeTime,
@@ -735,7 +735,7 @@ class SetupperAtlasPlugin(SetupperPluginBase):
735
735
  if newVUID is None:
736
736
  self.logger.debug("listDatasets " + name)
737
737
  for iDDMTry in range(3):
738
- newOut, errMsg = rucioAPI.listDatasets(name)
738
+ newOut, errMsg = rucioAPI.list_datasets(name)
739
739
  if newOut is None:
740
740
  time.sleep(10)
741
741
  else:
@@ -1021,12 +1021,12 @@ class SetupperAtlasPlugin(SetupperPluginBase):
1021
1021
  )
1022
1022
  for iDDMTry in range(3):
1023
1023
  try:
1024
- status = rucioAPI.registerDatasetSubscription(
1024
+ status = rucioAPI.register_dataset_subscription(
1025
1025
  job.dispatchDBlock,
1026
1026
  [dq2ID],
1027
1027
  activity=optActivity,
1028
1028
  lifetime=7,
1029
- dn=optOwner,
1029
+ distinguished_name=optOwner,
1030
1030
  comment=optComment,
1031
1031
  )
1032
1032
  out = "OK"
@@ -1439,7 +1439,7 @@ class SetupperAtlasPlugin(SetupperPluginBase):
1439
1439
  for iDDMTry in range(3):
1440
1440
  try:
1441
1441
  self.logger.debug("listFilesInDataset " + dataset)
1442
- items, tmpDummy = rucioAPI.listFilesInDataset(dataset, fileList=fileList)
1442
+ items, tmpDummy = rucioAPI.list_files_in_dataset(dataset, file_list=fileList)
1443
1443
  status = 0
1444
1444
  break
1445
1445
  except DataIdentifierNotFound:
@@ -1460,7 +1460,7 @@ class SetupperAtlasPlugin(SetupperPluginBase):
1460
1460
  # get datasets in container
1461
1461
  self.logger.debug("listDatasetsInContainer " + container)
1462
1462
  for iDDMTry in range(3):
1463
- datasets, out = rucioAPI.listDatasetsInContainer(container)
1463
+ datasets, out = rucioAPI.list_datasets_in_container(container)
1464
1464
  if datasets is None:
1465
1465
  time.sleep(10)
1466
1466
  else:
@@ -1474,7 +1474,7 @@ class SetupperAtlasPlugin(SetupperPluginBase):
1474
1474
  # get datasets in container
1475
1475
  self.logger.debug("listDatasetsInContainer " + container)
1476
1476
  for iDDMTry in range(3):
1477
- datasets, out = rucioAPI.listDatasetsInContainer(container)
1477
+ datasets, out = rucioAPI.list_datasets_in_container(container)
1478
1478
  if datasets is None:
1479
1479
  time.sleep(10)
1480
1480
  else:
@@ -1534,7 +1534,7 @@ class SetupperAtlasPlugin(SetupperPluginBase):
1534
1534
  nTry = 3
1535
1535
  for iDDMTry in range(nTry):
1536
1536
  self.logger.debug(f"{iDDMTry}/{nTry} listDatasetReplicas {dataset}")
1537
- status, out = rucioAPI.listDatasetReplicas(dataset)
1537
+ status, out = rucioAPI.list_dataset_replicas(dataset)
1538
1538
  if status != 0:
1539
1539
  time.sleep(10)
1540
1540
  else:
@@ -1699,7 +1699,7 @@ class SetupperAtlasPlugin(SetupperPluginBase):
1699
1699
  tmpZipOut = {}
1700
1700
  if tmpJob.useZipToPin():
1701
1701
  dids = [tmpFileList[tmpSubFileName]["lfn"] for tmpSubFileName in subFileNames]
1702
- tmpZipStat, tmpZipOut = rucioAPI.getZipFiles(dids, [tmpLocation])
1702
+ tmpZipStat, tmpZipOut = rucioAPI.get_zip_files(dids, [tmpLocation])
1703
1703
  if not tmpZipStat:
1704
1704
  self.logger.debug(f"failed to get zip files : {tmpZipOut}")
1705
1705
  tmpZipOut = {}
@@ -1741,7 +1741,7 @@ class SetupperAtlasPlugin(SetupperPluginBase):
1741
1741
  )
1742
1742
  for iDDMTry in range(nDDMTry):
1743
1743
  try:
1744
- out = rucioAPI.registerDataset(
1744
+ out = rucioAPI.register_dataset(
1745
1745
  disDBlock,
1746
1746
  lfns,
1747
1747
  guids,
@@ -1785,7 +1785,7 @@ class SetupperAtlasPlugin(SetupperPluginBase):
1785
1785
  for iDDMTry in range(3):
1786
1786
  status = False
1787
1787
  try:
1788
- rucioAPI.closeDataset(disDBlock)
1788
+ rucioAPI.close_dataset(disDBlock)
1789
1789
  status = True
1790
1790
  break
1791
1791
  except Exception:
@@ -1801,13 +1801,12 @@ class SetupperAtlasPlugin(SetupperPluginBase):
1801
1801
  nDDMTry = 3
1802
1802
  for iDDMTry in range(nDDMTry):
1803
1803
  try:
1804
- out = rucioAPI.registerDatasetLocation(
1804
+ out = rucioAPI.register_dataset_location(
1805
1805
  disDBlock,
1806
1806
  [tmpLocation],
1807
1807
  7,
1808
1808
  activity="Production Input",
1809
1809
  scope="panda",
1810
- asynchronous=True,
1811
1810
  grouping="NONE",
1812
1811
  )
1813
1812
  self.logger.debug(out)
@@ -1995,7 +1994,7 @@ class SetupperAtlasPlugin(SetupperPluginBase):
1995
1994
  for iDDMTry in range(nTry):
1996
1995
  try:
1997
1996
  # register subscription
1998
- status = rucioAPI.registerDatasetSubscription(dataset, [dq2ID], activity="Production Input")
1997
+ status = rucioAPI.register_dataset_subscription(dataset, [dq2ID], activity="Production Input")
1999
1998
  out = "OK"
2000
1999
  break
2001
2000
  except Exception:
@@ -2089,9 +2088,9 @@ class SetupperAtlasPlugin(SetupperPluginBase):
2089
2088
  # register dis dataset
2090
2089
  try:
2091
2090
  self.logger.debug(f"registering jumbo dis dataset {dispatchDBlock} with {len(lfns)} files")
2092
- out = rucioAPI.registerDataset(dispatchDBlock, lfns, guids, sizes, checksums, lifetime=14)
2091
+ out = rucioAPI.register_dataset(dispatchDBlock, lfns, guids, sizes, checksums, lifetime=14)
2093
2092
  vuid = out["vuid"]
2094
- rucioAPI.closeDataset(dispatchDBlock)
2093
+ rucioAPI.close_dataset(dispatchDBlock)
2095
2094
  except Exception:
2096
2095
  errType, errValue = sys.exc_info()[:2]
2097
2096
  self.logger.debug(f"failed to register jumbo dis dataset {dispatchDBlock} with {errType}:{errValue}")
@@ -2110,7 +2109,7 @@ class SetupperAtlasPlugin(SetupperPluginBase):
2110
2109
  )
2111
2110
  endPoint = tmpSiteSpec.ddm_input[scope_input]
2112
2111
  self.logger.debug(f"subscribing jumbo dis dataset {dispatchDBlock} to {endPoint}")
2113
- rucioAPI.registerDatasetSubscription(
2112
+ rucioAPI.register_dataset_subscription(
2114
2113
  dispatchDBlock,
2115
2114
  [endPoint],
2116
2115
  lifetime=14,
@@ -3,18 +3,17 @@ update dataset DB, and then close dataset and start Activator if needed
3
3
 
4
4
  """
5
5
 
6
- import sys
7
6
  import datetime
8
-
7
+ import sys
9
8
  from typing import Dict, List
10
9
 
11
- from pandacommon.pandalogger.PandaLogger import PandaLogger
12
10
  from pandacommon.pandalogger.LogWrapper import LogWrapper
11
+ from pandacommon.pandalogger.PandaLogger import PandaLogger
13
12
 
14
13
  from pandaserver.config import panda_config
14
+ from pandaserver.dataservice import DataServiceUtils
15
15
  from pandaserver.dataservice.activator import Activator
16
16
  from pandaserver.taskbuffer import EventServiceUtils
17
- from pandaserver.dataservice import DataServiceUtils
18
17
 
19
18
  # logger
20
19
  _logger = PandaLogger().getLogger("closer")
@@ -30,8 +29,7 @@ class Closer:
30
29
  """
31
30
 
32
31
  # constructor
33
- def __init__(self, taskBuffer, destination_data_blocks: List[str], job,
34
- dataset_map: Dict = None) -> None:
32
+ def __init__(self, taskBuffer, destination_data_blocks: List[str], job, dataset_map: Dict = None) -> None:
35
33
  """
36
34
  Constructor
37
35
 
@@ -56,8 +54,7 @@ class Closer:
56
54
  Returns:
57
55
  bool: True if all sub datasets are done, False otherwise.
58
56
  """
59
- tmp_log = LogWrapper(_logger,
60
- f"check_sub_datasets_in_jobset-{datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None).isoformat('/')}")
57
+ tmp_log = LogWrapper(_logger, f"check_sub_datasets_in_jobset-{datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None).isoformat('/')}")
61
58
  # skip already checked
62
59
  if self.all_subscription_finished is not None:
63
60
  return self.all_subscription_finished
@@ -81,8 +78,7 @@ class Closer:
81
78
  # count the number of unfinished
82
79
  not_finish = self.task_buffer.countFilesWithMap({"destinationDBlock": sub_dataset, "status": "unknown"})
83
80
  if not_finish != 0:
84
- tmp_log.debug(
85
- f"related sub dataset {sub_dataset} from {job_spec.PandaID} has {not_finish} unfinished files")
81
+ tmp_log.debug(f"related sub dataset {sub_dataset} from {job_spec.PandaID} has {not_finish} unfinished files")
86
82
  self.all_subscription_finished = False
87
83
  break
88
84
  if self.all_subscription_finished is None:
@@ -123,9 +119,7 @@ class Closer:
123
119
  closer_plugin_class = panda_config.getPlugin("closer_plugins", self.job.VO)
124
120
  if closer_plugin_class is None and self.job.VO == "atlas":
125
121
  # use ATLAS plugin for ATLAS
126
- from pandaserver.dataservice.closer_atlas_plugin import (
127
- CloserAtlasPlugin,
128
- )
122
+ from pandaserver.dataservice.closer_atlas_plugin import CloserAtlasPlugin
129
123
 
130
124
  closer_plugin_class = CloserAtlasPlugin
131
125
  if closer_plugin_class is not None:
@@ -141,9 +135,11 @@ class Closer:
141
135
  final_status (str): Final status.
142
136
  """
143
137
  # start Activator
144
- if not DataServiceUtils.is_sub_dataset(
145
- dataset.name) and self.job.jobStatus == "finished" and self.job.prodSourceLabel != "panda" and self.job.processingType not in [
146
- "merge", "unmerge"]:
138
+ if (
139
+ not DataServiceUtils.is_sub_dataset(dataset.name)
140
+ and self.job.jobStatus == "finished"
141
+ and (self.job.prodSourceLabel != "panda" or self.job.processingType not in ["merge", "unmerge"])
142
+ ):
147
143
  activator_thread = Activator(self.task_buffer, dataset)
148
144
  activator_thread.run()
149
145
 
@@ -154,8 +150,7 @@ class Closer:
154
150
  updates the dataset status and finalizes pending jobs if necessary.
155
151
  """
156
152
  try:
157
- tmp_log = LogWrapper(_logger,
158
- f"run-{datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None).isoformat('/')}-{self.panda_id}")
153
+ tmp_log = LogWrapper(_logger, f"run-{datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=None).isoformat('/')}-{self.panda_id}")
159
154
  tmp_log.debug(f"Start with job status: {self.job.jobStatus}")
160
155
  flag_complete = True
161
156
  final_status_dataset = []
@@ -170,10 +165,8 @@ class Closer:
170
165
  continue
171
166
 
172
167
  # ignore HC datasets
173
- if (DataServiceUtils.is_hammercloud_dataset(destination_data_block) or
174
- DataServiceUtils.is_user_gangarbt_dataset(destination_data_block)):
175
- if (not DataServiceUtils.is_sub_dataset(destination_data_block) and
176
- not DataServiceUtils.is_lib_dataset(destination_data_block)):
168
+ if DataServiceUtils.is_hammercloud_dataset(destination_data_block) or DataServiceUtils.is_user_gangarbt_dataset(destination_data_block):
169
+ if not DataServiceUtils.is_sub_dataset(destination_data_block) and not DataServiceUtils.is_lib_dataset(destination_data_block):
177
170
  tmp_log.debug(f"skip HC {destination_data_block}")
178
171
  continue
179
172
 
@@ -197,8 +190,7 @@ class Closer:
197
190
  dataset_list.sort()
198
191
 
199
192
  # count number of completed files
200
- not_finish = self.task_buffer.countFilesWithMap(
201
- {"destinationDBlock": destination_data_block, "status": "unknown"})
193
+ not_finish = self.task_buffer.countFilesWithMap({"destinationDBlock": destination_data_block, "status": "unknown"})
202
194
  if not_finish < 0:
203
195
  tmp_log.error(f"Invalid dispatch block file count: {not_finish}")
204
196
  flag_complete = False
@@ -4,7 +4,7 @@ ATLAS plugin for closer
4
4
  import sys
5
5
 
6
6
  from pandacommon.pandalogger.LogWrapper import LogWrapper
7
- from pandaserver.dataservice.DDM import rucioAPI
7
+ from pandaserver.dataservice.ddm import rucioAPI
8
8
  from pandaserver.dataservice import DataServiceUtils
9
9
 
10
10
 
@@ -80,7 +80,7 @@ class CloserAtlasPlugin:
80
80
  continue
81
81
  try:
82
82
  self.tmp_log.debug(f"immediate close {datasetSpec.name}")
83
- rucioAPI.closeDataset(datasetSpec.name)
83
+ rucioAPI.close_dataset(datasetSpec.name)
84
84
  except Exception:
85
85
  errtype, errvalue = sys.exc_info()[:2]
86
86
  self.tmp_log.warning(f"failed to close : {errtype} {errvalue}")