wmglobalqueue 2.4.5.1__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 (347) hide show
  1. Utils/CPMetrics.py +270 -0
  2. Utils/CertTools.py +100 -0
  3. Utils/EmailAlert.py +50 -0
  4. Utils/ExtendedUnitTestCase.py +62 -0
  5. Utils/FileTools.py +182 -0
  6. Utils/IteratorTools.py +80 -0
  7. Utils/MathUtils.py +31 -0
  8. Utils/MemoryCache.py +119 -0
  9. Utils/Patterns.py +24 -0
  10. Utils/Pipeline.py +137 -0
  11. Utils/PortForward.py +97 -0
  12. Utils/ProcFS.py +112 -0
  13. Utils/ProcessStats.py +194 -0
  14. Utils/PythonVersion.py +17 -0
  15. Utils/Signals.py +36 -0
  16. Utils/TemporaryEnvironment.py +27 -0
  17. Utils/Throttled.py +227 -0
  18. Utils/Timers.py +130 -0
  19. Utils/Timestamps.py +86 -0
  20. Utils/TokenManager.py +143 -0
  21. Utils/Tracing.py +60 -0
  22. Utils/TwPrint.py +98 -0
  23. Utils/Utilities.py +318 -0
  24. Utils/__init__.py +11 -0
  25. Utils/wmcoreDTools.py +707 -0
  26. WMCore/ACDC/Collection.py +57 -0
  27. WMCore/ACDC/CollectionTypes.py +12 -0
  28. WMCore/ACDC/CouchCollection.py +67 -0
  29. WMCore/ACDC/CouchFileset.py +238 -0
  30. WMCore/ACDC/CouchService.py +73 -0
  31. WMCore/ACDC/DataCollectionService.py +485 -0
  32. WMCore/ACDC/Fileset.py +94 -0
  33. WMCore/ACDC/__init__.py +11 -0
  34. WMCore/Algorithms/Alarm.py +39 -0
  35. WMCore/Algorithms/MathAlgos.py +274 -0
  36. WMCore/Algorithms/MiscAlgos.py +67 -0
  37. WMCore/Algorithms/ParseXMLFile.py +115 -0
  38. WMCore/Algorithms/Permissions.py +27 -0
  39. WMCore/Algorithms/Singleton.py +58 -0
  40. WMCore/Algorithms/SubprocessAlgos.py +129 -0
  41. WMCore/Algorithms/__init__.py +7 -0
  42. WMCore/Cache/GenericDataCache.py +98 -0
  43. WMCore/Cache/WMConfigCache.py +572 -0
  44. WMCore/Cache/__init__.py +0 -0
  45. WMCore/Configuration.py +659 -0
  46. WMCore/DAOFactory.py +47 -0
  47. WMCore/DataStructs/File.py +177 -0
  48. WMCore/DataStructs/Fileset.py +140 -0
  49. WMCore/DataStructs/Job.py +182 -0
  50. WMCore/DataStructs/JobGroup.py +142 -0
  51. WMCore/DataStructs/JobPackage.py +49 -0
  52. WMCore/DataStructs/LumiList.py +734 -0
  53. WMCore/DataStructs/Mask.py +219 -0
  54. WMCore/DataStructs/MathStructs/ContinuousSummaryHistogram.py +197 -0
  55. WMCore/DataStructs/MathStructs/DiscreteSummaryHistogram.py +92 -0
  56. WMCore/DataStructs/MathStructs/SummaryHistogram.py +117 -0
  57. WMCore/DataStructs/MathStructs/__init__.py +0 -0
  58. WMCore/DataStructs/Pickleable.py +24 -0
  59. WMCore/DataStructs/Run.py +256 -0
  60. WMCore/DataStructs/Subscription.py +175 -0
  61. WMCore/DataStructs/WMObject.py +47 -0
  62. WMCore/DataStructs/WorkUnit.py +112 -0
  63. WMCore/DataStructs/Workflow.py +60 -0
  64. WMCore/DataStructs/__init__.py +8 -0
  65. WMCore/Database/CMSCouch.py +1430 -0
  66. WMCore/Database/ConfigDBMap.py +29 -0
  67. WMCore/Database/CouchMonitoring.py +450 -0
  68. WMCore/Database/CouchUtils.py +118 -0
  69. WMCore/Database/DBCore.py +198 -0
  70. WMCore/Database/DBCreator.py +113 -0
  71. WMCore/Database/DBExceptionHandler.py +59 -0
  72. WMCore/Database/DBFactory.py +117 -0
  73. WMCore/Database/DBFormatter.py +177 -0
  74. WMCore/Database/Dialects.py +13 -0
  75. WMCore/Database/ExecuteDAO.py +327 -0
  76. WMCore/Database/MongoDB.py +241 -0
  77. WMCore/Database/MySQL/Destroy.py +42 -0
  78. WMCore/Database/MySQL/ListUserContent.py +20 -0
  79. WMCore/Database/MySQL/__init__.py +9 -0
  80. WMCore/Database/MySQLCore.py +132 -0
  81. WMCore/Database/Oracle/Destroy.py +56 -0
  82. WMCore/Database/Oracle/ListUserContent.py +19 -0
  83. WMCore/Database/Oracle/__init__.py +9 -0
  84. WMCore/Database/ResultSet.py +44 -0
  85. WMCore/Database/Transaction.py +91 -0
  86. WMCore/Database/__init__.py +9 -0
  87. WMCore/Database/ipy_profile_couch.py +438 -0
  88. WMCore/GlobalWorkQueue/CherryPyThreads/CleanUpTask.py +29 -0
  89. WMCore/GlobalWorkQueue/CherryPyThreads/HeartbeatMonitor.py +105 -0
  90. WMCore/GlobalWorkQueue/CherryPyThreads/LocationUpdateTask.py +28 -0
  91. WMCore/GlobalWorkQueue/CherryPyThreads/ReqMgrInteractionTask.py +35 -0
  92. WMCore/GlobalWorkQueue/CherryPyThreads/__init__.py +0 -0
  93. WMCore/GlobalWorkQueue/__init__.py +0 -0
  94. WMCore/GroupUser/CouchObject.py +127 -0
  95. WMCore/GroupUser/Decorators.py +51 -0
  96. WMCore/GroupUser/Group.py +33 -0
  97. WMCore/GroupUser/Interface.py +73 -0
  98. WMCore/GroupUser/User.py +96 -0
  99. WMCore/GroupUser/__init__.py +11 -0
  100. WMCore/Lexicon.py +836 -0
  101. WMCore/REST/Auth.py +202 -0
  102. WMCore/REST/CherryPyPeriodicTask.py +166 -0
  103. WMCore/REST/Error.py +333 -0
  104. WMCore/REST/Format.py +642 -0
  105. WMCore/REST/HeartbeatMonitorBase.py +90 -0
  106. WMCore/REST/Main.py +636 -0
  107. WMCore/REST/Server.py +2435 -0
  108. WMCore/REST/Services.py +24 -0
  109. WMCore/REST/Test.py +120 -0
  110. WMCore/REST/Tools.py +38 -0
  111. WMCore/REST/Validation.py +250 -0
  112. WMCore/REST/__init__.py +1 -0
  113. WMCore/ReqMgr/DataStructs/RequestStatus.py +209 -0
  114. WMCore/ReqMgr/DataStructs/RequestType.py +13 -0
  115. WMCore/ReqMgr/DataStructs/__init__.py +0 -0
  116. WMCore/ReqMgr/__init__.py +1 -0
  117. WMCore/Services/AlertManager/AlertManagerAPI.py +111 -0
  118. WMCore/Services/AlertManager/__init__.py +0 -0
  119. WMCore/Services/CRIC/CRIC.py +238 -0
  120. WMCore/Services/CRIC/__init__.py +0 -0
  121. WMCore/Services/DBS/DBS3Reader.py +1044 -0
  122. WMCore/Services/DBS/DBSConcurrency.py +44 -0
  123. WMCore/Services/DBS/DBSErrors.py +112 -0
  124. WMCore/Services/DBS/DBSReader.py +23 -0
  125. WMCore/Services/DBS/DBSUtils.py +166 -0
  126. WMCore/Services/DBS/DBSWriterObjects.py +381 -0
  127. WMCore/Services/DBS/ProdException.py +133 -0
  128. WMCore/Services/DBS/__init__.py +8 -0
  129. WMCore/Services/FWJRDB/FWJRDBAPI.py +118 -0
  130. WMCore/Services/FWJRDB/__init__.py +0 -0
  131. WMCore/Services/HTTPS/HTTPSAuthHandler.py +66 -0
  132. WMCore/Services/HTTPS/__init__.py +0 -0
  133. WMCore/Services/LogDB/LogDB.py +201 -0
  134. WMCore/Services/LogDB/LogDBBackend.py +191 -0
  135. WMCore/Services/LogDB/LogDBExceptions.py +11 -0
  136. WMCore/Services/LogDB/LogDBReport.py +85 -0
  137. WMCore/Services/LogDB/__init__.py +0 -0
  138. WMCore/Services/MSPileup/__init__.py +0 -0
  139. WMCore/Services/MSUtils/MSUtils.py +54 -0
  140. WMCore/Services/MSUtils/__init__.py +0 -0
  141. WMCore/Services/McM/McM.py +173 -0
  142. WMCore/Services/McM/__init__.py +8 -0
  143. WMCore/Services/MonIT/Grafana.py +133 -0
  144. WMCore/Services/MonIT/__init__.py +0 -0
  145. WMCore/Services/PyCondor/PyCondorAPI.py +154 -0
  146. WMCore/Services/PyCondor/__init__.py +0 -0
  147. WMCore/Services/ReqMgr/ReqMgr.py +261 -0
  148. WMCore/Services/ReqMgr/__init__.py +0 -0
  149. WMCore/Services/ReqMgrAux/ReqMgrAux.py +419 -0
  150. WMCore/Services/ReqMgrAux/__init__.py +0 -0
  151. WMCore/Services/RequestDB/RequestDBReader.py +267 -0
  152. WMCore/Services/RequestDB/RequestDBWriter.py +39 -0
  153. WMCore/Services/RequestDB/__init__.py +0 -0
  154. WMCore/Services/Requests.py +624 -0
  155. WMCore/Services/Rucio/Rucio.py +1290 -0
  156. WMCore/Services/Rucio/RucioUtils.py +74 -0
  157. WMCore/Services/Rucio/__init__.py +0 -0
  158. WMCore/Services/RucioConMon/RucioConMon.py +121 -0
  159. WMCore/Services/RucioConMon/__init__.py +0 -0
  160. WMCore/Services/Service.py +400 -0
  161. WMCore/Services/StompAMQ/__init__.py +0 -0
  162. WMCore/Services/TagCollector/TagCollector.py +155 -0
  163. WMCore/Services/TagCollector/XMLUtils.py +98 -0
  164. WMCore/Services/TagCollector/__init__.py +0 -0
  165. WMCore/Services/UUIDLib.py +13 -0
  166. WMCore/Services/UserFileCache/UserFileCache.py +160 -0
  167. WMCore/Services/UserFileCache/__init__.py +8 -0
  168. WMCore/Services/WMAgent/WMAgent.py +63 -0
  169. WMCore/Services/WMAgent/__init__.py +0 -0
  170. WMCore/Services/WMArchive/CMSSWMetrics.py +526 -0
  171. WMCore/Services/WMArchive/DataMap.py +463 -0
  172. WMCore/Services/WMArchive/WMArchive.py +33 -0
  173. WMCore/Services/WMArchive/__init__.py +0 -0
  174. WMCore/Services/WMBS/WMBS.py +97 -0
  175. WMCore/Services/WMBS/__init__.py +0 -0
  176. WMCore/Services/WMStats/DataStruct/RequestInfoCollection.py +300 -0
  177. WMCore/Services/WMStats/DataStruct/__init__.py +0 -0
  178. WMCore/Services/WMStats/WMStatsPycurl.py +145 -0
  179. WMCore/Services/WMStats/WMStatsReader.py +445 -0
  180. WMCore/Services/WMStats/WMStatsWriter.py +273 -0
  181. WMCore/Services/WMStats/__init__.py +0 -0
  182. WMCore/Services/WMStatsServer/WMStatsServer.py +134 -0
  183. WMCore/Services/WMStatsServer/__init__.py +0 -0
  184. WMCore/Services/WorkQueue/WorkQueue.py +492 -0
  185. WMCore/Services/WorkQueue/__init__.py +0 -0
  186. WMCore/Services/__init__.py +8 -0
  187. WMCore/Services/pycurl_manager.py +574 -0
  188. WMCore/WMBase.py +50 -0
  189. WMCore/WMConnectionBase.py +164 -0
  190. WMCore/WMException.py +183 -0
  191. WMCore/WMExceptions.py +269 -0
  192. WMCore/WMFactory.py +76 -0
  193. WMCore/WMInit.py +377 -0
  194. WMCore/WMLogging.py +104 -0
  195. WMCore/WMSpec/ConfigSectionTree.py +442 -0
  196. WMCore/WMSpec/Persistency.py +135 -0
  197. WMCore/WMSpec/Steps/BuildMaster.py +87 -0
  198. WMCore/WMSpec/Steps/BuildTools.py +201 -0
  199. WMCore/WMSpec/Steps/Builder.py +97 -0
  200. WMCore/WMSpec/Steps/Diagnostic.py +89 -0
  201. WMCore/WMSpec/Steps/Emulator.py +62 -0
  202. WMCore/WMSpec/Steps/ExecuteMaster.py +208 -0
  203. WMCore/WMSpec/Steps/Executor.py +210 -0
  204. WMCore/WMSpec/Steps/StepFactory.py +213 -0
  205. WMCore/WMSpec/Steps/TaskEmulator.py +75 -0
  206. WMCore/WMSpec/Steps/Template.py +204 -0
  207. WMCore/WMSpec/Steps/Templates/AlcaHarvest.py +76 -0
  208. WMCore/WMSpec/Steps/Templates/CMSSW.py +613 -0
  209. WMCore/WMSpec/Steps/Templates/DQMUpload.py +59 -0
  210. WMCore/WMSpec/Steps/Templates/DeleteFiles.py +70 -0
  211. WMCore/WMSpec/Steps/Templates/LogArchive.py +84 -0
  212. WMCore/WMSpec/Steps/Templates/LogCollect.py +105 -0
  213. WMCore/WMSpec/Steps/Templates/StageOut.py +105 -0
  214. WMCore/WMSpec/Steps/Templates/__init__.py +10 -0
  215. WMCore/WMSpec/Steps/WMExecutionFailure.py +21 -0
  216. WMCore/WMSpec/Steps/__init__.py +8 -0
  217. WMCore/WMSpec/Utilities.py +63 -0
  218. WMCore/WMSpec/WMSpecErrors.py +12 -0
  219. WMCore/WMSpec/WMStep.py +347 -0
  220. WMCore/WMSpec/WMTask.py +1997 -0
  221. WMCore/WMSpec/WMWorkload.py +2288 -0
  222. WMCore/WMSpec/WMWorkloadTools.py +382 -0
  223. WMCore/WMSpec/__init__.py +9 -0
  224. WMCore/WorkQueue/DataLocationMapper.py +273 -0
  225. WMCore/WorkQueue/DataStructs/ACDCBlock.py +47 -0
  226. WMCore/WorkQueue/DataStructs/Block.py +48 -0
  227. WMCore/WorkQueue/DataStructs/CouchWorkQueueElement.py +148 -0
  228. WMCore/WorkQueue/DataStructs/WorkQueueElement.py +274 -0
  229. WMCore/WorkQueue/DataStructs/WorkQueueElementResult.py +152 -0
  230. WMCore/WorkQueue/DataStructs/WorkQueueElementsSummary.py +185 -0
  231. WMCore/WorkQueue/DataStructs/__init__.py +0 -0
  232. WMCore/WorkQueue/Policy/End/EndPolicyInterface.py +44 -0
  233. WMCore/WorkQueue/Policy/End/SingleShot.py +22 -0
  234. WMCore/WorkQueue/Policy/End/__init__.py +32 -0
  235. WMCore/WorkQueue/Policy/PolicyInterface.py +17 -0
  236. WMCore/WorkQueue/Policy/Start/Block.py +258 -0
  237. WMCore/WorkQueue/Policy/Start/Dataset.py +180 -0
  238. WMCore/WorkQueue/Policy/Start/MonteCarlo.py +131 -0
  239. WMCore/WorkQueue/Policy/Start/ResubmitBlock.py +171 -0
  240. WMCore/WorkQueue/Policy/Start/StartPolicyInterface.py +316 -0
  241. WMCore/WorkQueue/Policy/Start/__init__.py +34 -0
  242. WMCore/WorkQueue/Policy/__init__.py +57 -0
  243. WMCore/WorkQueue/WMBSHelper.py +772 -0
  244. WMCore/WorkQueue/WorkQueue.py +1237 -0
  245. WMCore/WorkQueue/WorkQueueBackend.py +750 -0
  246. WMCore/WorkQueue/WorkQueueBase.py +39 -0
  247. WMCore/WorkQueue/WorkQueueExceptions.py +44 -0
  248. WMCore/WorkQueue/WorkQueueReqMgrInterface.py +278 -0
  249. WMCore/WorkQueue/WorkQueueUtils.py +130 -0
  250. WMCore/WorkQueue/__init__.py +13 -0
  251. WMCore/Wrappers/JsonWrapper/JSONThunker.py +342 -0
  252. WMCore/Wrappers/JsonWrapper/__init__.py +7 -0
  253. WMCore/Wrappers/__init__.py +6 -0
  254. WMCore/__init__.py +10 -0
  255. wmglobalqueue-2.4.5.1.data/data/bin/wmc-dist-patch +15 -0
  256. wmglobalqueue-2.4.5.1.data/data/bin/wmc-dist-unpatch +8 -0
  257. wmglobalqueue-2.4.5.1.data/data/bin/wmc-httpd +3 -0
  258. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/.couchapprc +1 -0
  259. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/README.md +40 -0
  260. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/_attachments/index.html +264 -0
  261. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/_attachments/js/ElementInfoByWorkflow.js +96 -0
  262. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/_attachments/js/StuckElementInfo.js +57 -0
  263. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/_attachments/js/WorkloadInfoTable.js +80 -0
  264. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/_attachments/js/dataTable.js +70 -0
  265. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/_attachments/js/namespace.js +23 -0
  266. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/_attachments/style/main.css +75 -0
  267. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/couchapp.json +4 -0
  268. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/filters/childQueueFilter.js +13 -0
  269. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/filters/filterDeletedDocs.js +3 -0
  270. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/filters/queueFilter.js +11 -0
  271. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/language +1 -0
  272. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/lib/mustache.js +333 -0
  273. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/lib/validate.js +27 -0
  274. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/lib/workqueue_utils.js +61 -0
  275. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/lists/elementsDetail.js +28 -0
  276. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/lists/filter.js +86 -0
  277. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/lists/stuckElements.js +38 -0
  278. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/lists/workRestrictions.js +153 -0
  279. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/lists/workflowSummary.js +28 -0
  280. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/rewrites.json +73 -0
  281. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/shows/redirect.js +23 -0
  282. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/shows/status.js +40 -0
  283. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/templates/ElementSummaryByWorkflow.html +27 -0
  284. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/templates/StuckElementSummary.html +26 -0
  285. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/templates/TaskStatus.html +23 -0
  286. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/templates/WorkflowSummary.html +27 -0
  287. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/templates/partials/workqueue-common-lib.html +2 -0
  288. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/templates/partials/yui-lib-remote.html +16 -0
  289. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/templates/partials/yui-lib.html +18 -0
  290. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/updates/in-place.js +50 -0
  291. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/validate_doc_update.js +8 -0
  292. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/vendor/couchapp/_attachments/jquery.couch.app.js +235 -0
  293. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/vendor/couchapp/_attachments/jquery.pathbinder.js +173 -0
  294. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/activeData/map.js +8 -0
  295. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/activeData/reduce.js +2 -0
  296. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/activeParentData/map.js +8 -0
  297. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/activeParentData/reduce.js +2 -0
  298. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/activePileupData/map.js +8 -0
  299. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/activePileupData/reduce.js +2 -0
  300. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/analyticsData/map.js +11 -0
  301. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/analyticsData/reduce.js +1 -0
  302. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/availableByPriority/map.js +6 -0
  303. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/conflicts/map.js +5 -0
  304. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/elements/map.js +5 -0
  305. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/elementsByData/map.js +8 -0
  306. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/elementsByParent/map.js +8 -0
  307. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/elementsByParentData/map.js +8 -0
  308. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/elementsByPileupData/map.js +8 -0
  309. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/elementsByStatus/map.js +8 -0
  310. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/elementsBySubscription/map.js +6 -0
  311. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/elementsByWorkflow/map.js +8 -0
  312. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/elementsByWorkflow/reduce.js +3 -0
  313. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/elementsDetailByWorkflowAndStatus/map.js +26 -0
  314. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/jobInjectStatusByRequest/map.js +10 -0
  315. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/jobInjectStatusByRequest/reduce.js +1 -0
  316. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/jobStatusByRequest/map.js +6 -0
  317. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/jobStatusByRequest/reduce.js +1 -0
  318. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndPriority/map.js +6 -0
  319. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndPriority/reduce.js +1 -0
  320. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndStatus/map.js +6 -0
  321. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndStatus/reduce.js +1 -0
  322. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/jobsByRequest/map.js +6 -0
  323. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/jobsByRequest/reduce.js +1 -0
  324. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/jobsByStatus/map.js +6 -0
  325. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/jobsByStatus/reduce.js +1 -0
  326. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/jobsByStatusAndPriority/map.js +6 -0
  327. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/jobsByStatusAndPriority/reduce.js +1 -0
  328. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/openRequests/map.js +6 -0
  329. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/recent-items/map.js +5 -0
  330. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/siteWhitelistByRequest/map.js +6 -0
  331. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/siteWhitelistByRequest/reduce.js +1 -0
  332. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/specsByWorkflow/map.js +5 -0
  333. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/stuckElements/map.js +38 -0
  334. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/wmbsInjectStatusByRequest/map.js +12 -0
  335. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/wmbsInjectStatusByRequest/reduce.js +3 -0
  336. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/wmbsUrl/map.js +6 -0
  337. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/wmbsUrl/reduce.js +2 -0
  338. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/wmbsUrlByRequest/map.js +6 -0
  339. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/wmbsUrlByRequest/reduce.js +2 -0
  340. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/workflowSummary/map.js +9 -0
  341. wmglobalqueue-2.4.5.1.data/data/data/couchapps/WorkQueue/views/workflowSummary/reduce.js +10 -0
  342. wmglobalqueue-2.4.5.1.dist-info/METADATA +26 -0
  343. wmglobalqueue-2.4.5.1.dist-info/RECORD +347 -0
  344. wmglobalqueue-2.4.5.1.dist-info/WHEEL +5 -0
  345. wmglobalqueue-2.4.5.1.dist-info/licenses/LICENSE +202 -0
  346. wmglobalqueue-2.4.5.1.dist-info/licenses/NOTICE +16 -0
  347. wmglobalqueue-2.4.5.1.dist-info/top_level.txt +2 -0
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env python
2
+ # encoding: utf-8
3
+ """
4
+ Collection.py
5
+
6
+ Created by Dave Evans on 2010-03-11.
7
+ Copyright (c) 2010 Fermilab. All rights reserved.
8
+ """
9
+
10
+ from WMCore.DataStructs.WMObject import WMObject
11
+ import WMCore.ACDC.CollectionTypes as CollectionTypes
12
+
13
+
14
+ class Collection(dict, WMObject):
15
+ def __init__(self, **options):
16
+ dict.__init__(self)
17
+ WMObject.__init__(self)
18
+ self.setdefault("name", None)
19
+ self.setdefault("type", CollectionTypes.GenericCollection)
20
+ self.setdefault("filesets", [])
21
+ self.update(options)
22
+
23
+ def create(self, unique=False):
24
+ """
25
+ _create_
26
+
27
+ Create this Collection in the back end
28
+
29
+ """
30
+ pass
31
+
32
+ def populate(self):
33
+ """
34
+ _populate_
35
+
36
+ Pull in all filesets & file entries
37
+
38
+ """
39
+ pass
40
+
41
+ def drop(self):
42
+ """
43
+ _drop_
44
+
45
+ Remove this collection.
46
+ """
47
+ pass
48
+
49
+ def addFileset(self, fileset):
50
+ """
51
+ _addFiles_
52
+
53
+ Add a fileset to the collection.
54
+ """
55
+ fileset.setCollection(self)
56
+ self["filesets"].append(fileset)
57
+ return
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env python
2
+ # encoding: utf-8
3
+ """
4
+ CollectionTypes.py
5
+
6
+ Created by Dave Evans on 2010-03-05.
7
+ Copyright (c) 2010 Fermilab. All rights reserved.
8
+ """
9
+
10
+
11
+ GenericCollection = "ACDC.CollectionTypes.GenericCollection"
12
+ DataCollection = "ACDC.CollectionTypes.DataCollection"
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env python
2
+ """
3
+ CouchCollection.py
4
+
5
+ Created by Dave Evans on 2010-03-14.
6
+ Copyright (c) 2010 Fermilab. All rights reserved.
7
+ """
8
+
9
+ from WMCore.ACDC.Collection import Collection
10
+ from WMCore.ACDC.CouchFileset import CouchFileset
11
+ from WMCore.Database.CouchUtils import connectToCouch
12
+
13
+
14
+ class CouchCollection(Collection):
15
+ """
16
+ Collection that can be stored in CouchDB.
17
+
18
+ Required Args:
19
+ database - CouchDB database instance name
20
+ url - CouchDB Server URL
21
+ name - name of the collection
22
+ """
23
+
24
+ def __init__(self, **options):
25
+ Collection.__init__(self, **options)
26
+ self.url = options.get("url")
27
+ self.database = options.get("database")
28
+ self.name = options.get("name")
29
+ self.server = None
30
+ self.couchdb = None
31
+
32
+ @connectToCouch
33
+ def drop(self):
34
+ """
35
+ _drop_
36
+
37
+ Drop this collection and all files and filesets within it.
38
+ """
39
+ params = {"startkey": [self.name],
40
+ "endkey": [self.name, {}],
41
+ "reduce": False}
42
+ result = self.couchdb.loadView("ACDC", "coll_fileset_docs",
43
+ params)
44
+
45
+ for row in result["rows"]:
46
+ self.couchdb.delete_doc(row["id"])
47
+ return
48
+
49
+ @connectToCouch
50
+ def populate(self):
51
+ """
52
+ _populate_
53
+
54
+ The load the collection and all filesets and files out of couch.
55
+ """
56
+ params = {"startkey": [self.name],
57
+ "endkey": [self.name, {}],
58
+ "reduce": True, "group_level": 2}
59
+ result = self.couchdb.loadView("ACDC", "coll_fileset_docs",
60
+ params)
61
+ self["filesets"] = []
62
+ for row in result["rows"]:
63
+ fileset = CouchFileset(database=self.database, url=self.url,
64
+ name=row["key"][1])
65
+ self.addFileset(fileset)
66
+ fileset.populate()
67
+ return
@@ -0,0 +1,238 @@
1
+ #!/usr/bin/env python
2
+ # encoding: utf-8
3
+ """
4
+ CouchFileset.py
5
+
6
+ Created by Dave Evans on 2010-03-19.
7
+ Copyright (c) 2010 Fermilab. All rights reserved.
8
+ """
9
+
10
+ from future.utils import viewvalues
11
+
12
+ import time
13
+
14
+ import WMCore.Database.CMSCouch as CMSCouch
15
+ from WMCore.ACDC.Fileset import Fileset
16
+ from WMCore.Algorithms.ParseXMLFile import coroutine
17
+ from WMCore.DataStructs.File import File
18
+ from WMCore.DataStructs.Fileset import Fileset as DataStructsFileset
19
+ from WMCore.DataStructs.Run import Run
20
+ from WMCore.Database.CouchUtils import connectToCouch, requireFilesetName
21
+
22
+
23
+ @coroutine
24
+ def makeRun(targets):
25
+ """
26
+ _makeRun_
27
+
28
+ create a DataStruct Run instance form the Couch JSON dict
29
+ """
30
+ while True:
31
+ fileRef, runs = (yield)
32
+ for run in runs:
33
+ newRun = Run(run[u'Run'], *run[u'Lumis'])
34
+ fileRef.addRun(newRun)
35
+
36
+
37
+ @coroutine
38
+ def filePipeline(targets):
39
+ """
40
+ _conversionPipeline_
41
+
42
+ """
43
+ while True:
44
+ inputDict = (yield)
45
+ newFile = File(
46
+ lfn=str(inputDict[u'lfn']),
47
+ size=int(inputDict[u'size']),
48
+ events=int(inputDict[u'events'])
49
+ )
50
+ targets['run'].send((newFile, inputDict[u'runs']))
51
+ targets['fileset'].addFile(newFile)
52
+
53
+
54
+ class CouchFileset(Fileset):
55
+ def __init__(self, **options):
56
+ Fileset.__init__(self, **options)
57
+ self.url = options.get('url')
58
+ self.database = options.get('database')
59
+ self['name'] = options.get('name')
60
+ self.server = None
61
+ self.couchdb = None
62
+
63
+ @connectToCouch
64
+ def drop(self):
65
+ """
66
+ _drop_
67
+
68
+ Remove this fileset
69
+
70
+ This is racy. someone can add to the fileset before we get done
71
+ deleting it. Actually, they can delete after we get done deleting
72
+ it too. Oh well.
73
+ """
74
+ for d in self.filelistDocuments():
75
+ self.couchdb.delete_doc(d)
76
+
77
+ @connectToCouch
78
+ @requireFilesetName
79
+ def filelistDocuments(self):
80
+ """
81
+ _filelistDocuments_
82
+
83
+ Get a list of document ids corresponding to filelists in this fileset
84
+ """
85
+ params = {"startkey": [self.collectionName, self["name"]],
86
+ "endkey": [self.collectionName, self["name"]],
87
+ "reduce": False}
88
+ result = self.couchdb.loadView("ACDC", "coll_fileset_docs",
89
+ params)
90
+
91
+ docs = [row["id"] for row in result["rows"]]
92
+ return docs
93
+
94
+ @connectToCouch
95
+ @requireFilesetName
96
+ def add(self, files, mask=None):
97
+ """
98
+ _add_
99
+
100
+ Add files to this fileset
101
+
102
+ Note: if job was lumi based splitted, then we do not have
103
+ reliable events information. If job was event based splitted,
104
+ then we do not have reliable lumi information.
105
+ """
106
+ filteredFiles = []
107
+ if mask:
108
+ for f in files:
109
+ # There might be no LastEvent for last job of a file
110
+ if mask['LastEvent'] and mask['FirstEvent']:
111
+ f['events'] = mask['LastEvent'] - mask['FirstEvent'] + 1
112
+ f['first_event'] = mask['FirstEvent']
113
+ elif mask['FirstEvent']:
114
+ f['events'] = f['events'] - mask['FirstEvent'] + 1
115
+ f['first_event'] = mask['FirstEvent']
116
+
117
+ maskLumis = mask.getRunAndLumis()
118
+ if maskLumis != {}:
119
+ # Then we actually have to do something
120
+ for f in files:
121
+ newRuns = mask.filterRunLumisByMask(runs=f['runs'])
122
+ if newRuns != set([]):
123
+ f['runs'] = newRuns
124
+ filteredFiles.append(f)
125
+ else:
126
+ # Likely real data with EventBased splitting
127
+ filteredFiles = files
128
+ else:
129
+ filteredFiles = files
130
+
131
+ jsonFiles = {}
132
+ for f in filteredFiles:
133
+ jsonFiles.__setitem__(f['lfn'], f.__to_json__(None))
134
+ fileList = self.makeFilelist(jsonFiles)
135
+ return fileList
136
+
137
+ @connectToCouch
138
+ @requireFilesetName
139
+ def makeFilelist(self, files=None):
140
+ """
141
+ _makeFilelist_
142
+
143
+ Create a new filelist document containing the id
144
+ """
145
+ files = files or {}
146
+ # add a version to each of these ACDC docs such that we can properly
147
+ # parse them and avoid issues between ACDC docs and agent base code
148
+ input = {"collection_name": self.collectionName,
149
+ "collection_type": self.collectionType,
150
+ "fileset_name": self["name"],
151
+ "files": files,
152
+ "acdc_version": 2,
153
+ "timestamp": time.time()}
154
+
155
+ document = CMSCouch.Document(None, input)
156
+
157
+ commitInfo = self.couchdb.commitOne(document)
158
+ document['_id'] = commitInfo[0]['id']
159
+ if 'rev' in commitInfo[0]:
160
+ document['_rev'] = commitInfo[0]['rev']
161
+ else:
162
+ if commitInfo[0]['reason'].find('{exit_status,0}') != -1:
163
+ # TODO: in this case actually insert succeeded but return error
164
+ # due to the bug
165
+ # https://issues.apache.org/jira/browse/COUCHDB-893
166
+ # if rev is needed to proceed need to get by
167
+ # self.couchdb.documentExist(document['_id'])
168
+ # but that function need to be changed to return _rev
169
+ document['_rev'] = "NeedToGet"
170
+ else:
171
+ msg = "Unable to insert document: check acdc server doc id: %s" % document['_id']
172
+ raise RuntimeError(msg)
173
+ return document
174
+
175
+ @connectToCouch
176
+ def listFiles(self):
177
+ """
178
+ _listFiles_
179
+
180
+ return an iterator over the files contained in this fileset
181
+ """
182
+ for filelist in self.filelistDocuments():
183
+ try:
184
+ doc = self.couchdb.document(filelist)
185
+ except CMSCouch.CouchNotFoundError as ex:
186
+ msg = "Unable to retrieve Couch Document for fileset"
187
+ msg += str(msg)
188
+ raise RuntimeError(msg)
189
+
190
+ files = doc["files"]
191
+ for d in viewvalues(files):
192
+ yield d
193
+
194
+ @connectToCouch
195
+ def fileset(self):
196
+ """
197
+ _fileset_
198
+
199
+ Make a WMCore.DataStruct.Fileset instance containing the files in this fileset
200
+
201
+ """
202
+ result = DataStructsFileset(self['name'])
203
+ pipeline = filePipeline({'fileset': result, 'run': makeRun({})})
204
+ for f in self.listFiles():
205
+ pipeline.send(f)
206
+ return result
207
+
208
+ @connectToCouch
209
+ @requireFilesetName
210
+ def populate(self):
211
+ """
212
+ _populate_
213
+
214
+ Load all files out of couch.
215
+ """
216
+ params = {"startkey": [self.collectionName, self["name"]],
217
+ "endkey": [self.collectionName, self["name"]],
218
+ "include_docs": True, "reduce": False}
219
+ result = self.couchdb.loadView("ACDC", "coll_fileset_docs",
220
+ params)
221
+ self.files = {}
222
+ for row in result["rows"]:
223
+ self.files.update(row["doc"]["files"])
224
+ self["files"] = self.files
225
+ return
226
+
227
+ def fileCount(self):
228
+ """
229
+ _fileCount_
230
+
231
+ Determine how many files are in the fileset.
232
+ """
233
+ params = {"startkey": [self.collectionName, self["name"]],
234
+ "endkey": [self.collectionName, self["name"]],
235
+ "reduce": True, "group_level": 2}
236
+ result = self.couchdb.loadView("ACDC", "coll_fileset_count",
237
+ params)
238
+ return result["rows"][0]["value"]
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env python
2
+ # encoding: utf-8
3
+ """
4
+ CouchService.py
5
+
6
+ Created by Dave Evans on 2010-04-20.
7
+ Copyright (c) 2010 Fermilab. All rights reserved.
8
+ """
9
+ from builtins import object
10
+ from time import time
11
+
12
+ import WMCore.Database.CouchUtils as CouchUtils
13
+
14
+
15
+ class CouchService(object):
16
+ def __init__(self, **options):
17
+ super(CouchService, self).__init__()
18
+ self.options = {}
19
+ self.options.update(options)
20
+ self.url = options.get('url', None)
21
+ self.database = options.get('database', None)
22
+ self.server = None
23
+ self.couchdb = None
24
+
25
+ def listFilesets(self, collectionInstance):
26
+ """
27
+ _listFilesets_
28
+
29
+ List filesets for the collection instance provided.
30
+ """
31
+ collectionInstance.populate()
32
+
33
+ for fileset in collectionInstance["filesets"]:
34
+ yield fileset
35
+
36
+ @CouchUtils.connectToCouch
37
+ def removeFilesetsByCollectionName(self, collectionName):
38
+ """
39
+ _removeFilesetsByCollectionName_
40
+
41
+ Remove all the collections matching certain collection
42
+ name.
43
+ """
44
+ result = self.couchdb.loadView("ACDC", "byCollectionName", options={"reduce": False}, keys=[collectionName])
45
+ for entry in result["rows"]:
46
+ self.couchdb.queueDelete(entry["value"])
47
+ return self.couchdb.commit()
48
+
49
+ @CouchUtils.connectToCouch
50
+ def removeOldFilesets(self, expirationDays):
51
+ """
52
+ _removeOldFilesets_
53
+
54
+ Remove filesets older than certain date defined
55
+ in expirationDays (in days).
56
+ """
57
+ cutoutPoint = time() - (expirationDays * 3600 * 24)
58
+ result = self.couchdb.loadView("ACDC", "byTimestamp", {"endkey": cutoutPoint})
59
+ count = 0
60
+ for entry in result["rows"]:
61
+ self.couchdb.queueDelete(entry["value"])
62
+ count += 1
63
+ self.couchdb.commit()
64
+ return count
65
+
66
+ @CouchUtils.connectToCouch
67
+ def listCollectionNames(self):
68
+ options = {'reduce': True, 'group_level': 1, 'stale': "update_after"}
69
+ result = self.couchdb.loadView("ACDC", "byCollectionName", options)
70
+ collectionNames = []
71
+ for row in result["rows"]:
72
+ collectionNames.append(row["key"])
73
+ return collectionNames