wmglobalqueue 2.3.10__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.

Potentially problematic release.


This version of wmglobalqueue might be problematic. Click here for more details.

Files changed (345) hide show
  1. Utils/CPMetrics.py +270 -0
  2. Utils/CertTools.py +62 -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/ProcessStats.py +103 -0
  13. Utils/PythonVersion.py +17 -0
  14. Utils/Signals.py +36 -0
  15. Utils/TemporaryEnvironment.py +27 -0
  16. Utils/Throttled.py +227 -0
  17. Utils/Timers.py +130 -0
  18. Utils/Timestamps.py +86 -0
  19. Utils/TokenManager.py +143 -0
  20. Utils/Tracing.py +60 -0
  21. Utils/TwPrint.py +98 -0
  22. Utils/Utilities.py +308 -0
  23. Utils/__init__.py +11 -0
  24. WMCore/ACDC/Collection.py +57 -0
  25. WMCore/ACDC/CollectionTypes.py +12 -0
  26. WMCore/ACDC/CouchCollection.py +67 -0
  27. WMCore/ACDC/CouchFileset.py +238 -0
  28. WMCore/ACDC/CouchService.py +73 -0
  29. WMCore/ACDC/DataCollectionService.py +485 -0
  30. WMCore/ACDC/Fileset.py +94 -0
  31. WMCore/ACDC/__init__.py +11 -0
  32. WMCore/Algorithms/Alarm.py +39 -0
  33. WMCore/Algorithms/MathAlgos.py +274 -0
  34. WMCore/Algorithms/MiscAlgos.py +67 -0
  35. WMCore/Algorithms/ParseXMLFile.py +115 -0
  36. WMCore/Algorithms/Permissions.py +27 -0
  37. WMCore/Algorithms/Singleton.py +58 -0
  38. WMCore/Algorithms/SubprocessAlgos.py +129 -0
  39. WMCore/Algorithms/__init__.py +7 -0
  40. WMCore/Cache/GenericDataCache.py +98 -0
  41. WMCore/Cache/WMConfigCache.py +572 -0
  42. WMCore/Cache/__init__.py +0 -0
  43. WMCore/Configuration.py +651 -0
  44. WMCore/DAOFactory.py +47 -0
  45. WMCore/DataStructs/File.py +177 -0
  46. WMCore/DataStructs/Fileset.py +140 -0
  47. WMCore/DataStructs/Job.py +182 -0
  48. WMCore/DataStructs/JobGroup.py +142 -0
  49. WMCore/DataStructs/JobPackage.py +49 -0
  50. WMCore/DataStructs/LumiList.py +734 -0
  51. WMCore/DataStructs/Mask.py +219 -0
  52. WMCore/DataStructs/MathStructs/ContinuousSummaryHistogram.py +197 -0
  53. WMCore/DataStructs/MathStructs/DiscreteSummaryHistogram.py +92 -0
  54. WMCore/DataStructs/MathStructs/SummaryHistogram.py +117 -0
  55. WMCore/DataStructs/MathStructs/__init__.py +0 -0
  56. WMCore/DataStructs/Pickleable.py +24 -0
  57. WMCore/DataStructs/Run.py +256 -0
  58. WMCore/DataStructs/Subscription.py +175 -0
  59. WMCore/DataStructs/WMObject.py +47 -0
  60. WMCore/DataStructs/WorkUnit.py +112 -0
  61. WMCore/DataStructs/Workflow.py +60 -0
  62. WMCore/DataStructs/__init__.py +8 -0
  63. WMCore/Database/CMSCouch.py +1349 -0
  64. WMCore/Database/ConfigDBMap.py +29 -0
  65. WMCore/Database/CouchUtils.py +118 -0
  66. WMCore/Database/DBCore.py +198 -0
  67. WMCore/Database/DBCreator.py +113 -0
  68. WMCore/Database/DBExceptionHandler.py +57 -0
  69. WMCore/Database/DBFactory.py +110 -0
  70. WMCore/Database/DBFormatter.py +177 -0
  71. WMCore/Database/Dialects.py +13 -0
  72. WMCore/Database/ExecuteDAO.py +327 -0
  73. WMCore/Database/MongoDB.py +241 -0
  74. WMCore/Database/MySQL/Destroy.py +42 -0
  75. WMCore/Database/MySQL/ListUserContent.py +20 -0
  76. WMCore/Database/MySQL/__init__.py +9 -0
  77. WMCore/Database/MySQLCore.py +132 -0
  78. WMCore/Database/Oracle/Destroy.py +56 -0
  79. WMCore/Database/Oracle/ListUserContent.py +19 -0
  80. WMCore/Database/Oracle/__init__.py +9 -0
  81. WMCore/Database/ResultSet.py +44 -0
  82. WMCore/Database/Transaction.py +91 -0
  83. WMCore/Database/__init__.py +9 -0
  84. WMCore/Database/ipy_profile_couch.py +438 -0
  85. WMCore/GlobalWorkQueue/CherryPyThreads/CleanUpTask.py +29 -0
  86. WMCore/GlobalWorkQueue/CherryPyThreads/HeartbeatMonitor.py +105 -0
  87. WMCore/GlobalWorkQueue/CherryPyThreads/LocationUpdateTask.py +28 -0
  88. WMCore/GlobalWorkQueue/CherryPyThreads/ReqMgrInteractionTask.py +35 -0
  89. WMCore/GlobalWorkQueue/CherryPyThreads/__init__.py +0 -0
  90. WMCore/GlobalWorkQueue/__init__.py +0 -0
  91. WMCore/GroupUser/CouchObject.py +127 -0
  92. WMCore/GroupUser/Decorators.py +51 -0
  93. WMCore/GroupUser/Group.py +33 -0
  94. WMCore/GroupUser/Interface.py +73 -0
  95. WMCore/GroupUser/User.py +96 -0
  96. WMCore/GroupUser/__init__.py +11 -0
  97. WMCore/Lexicon.py +836 -0
  98. WMCore/REST/Auth.py +202 -0
  99. WMCore/REST/CherryPyPeriodicTask.py +166 -0
  100. WMCore/REST/Error.py +333 -0
  101. WMCore/REST/Format.py +642 -0
  102. WMCore/REST/HeartbeatMonitorBase.py +90 -0
  103. WMCore/REST/Main.py +623 -0
  104. WMCore/REST/Server.py +2435 -0
  105. WMCore/REST/Services.py +24 -0
  106. WMCore/REST/Test.py +120 -0
  107. WMCore/REST/Tools.py +38 -0
  108. WMCore/REST/Validation.py +250 -0
  109. WMCore/REST/__init__.py +1 -0
  110. WMCore/ReqMgr/DataStructs/RequestStatus.py +209 -0
  111. WMCore/ReqMgr/DataStructs/RequestType.py +13 -0
  112. WMCore/ReqMgr/DataStructs/__init__.py +0 -0
  113. WMCore/ReqMgr/__init__.py +1 -0
  114. WMCore/Services/AlertManager/AlertManagerAPI.py +111 -0
  115. WMCore/Services/AlertManager/__init__.py +0 -0
  116. WMCore/Services/CRIC/CRIC.py +238 -0
  117. WMCore/Services/CRIC/__init__.py +0 -0
  118. WMCore/Services/DBS/DBS3Reader.py +1044 -0
  119. WMCore/Services/DBS/DBSConcurrency.py +44 -0
  120. WMCore/Services/DBS/DBSErrors.py +113 -0
  121. WMCore/Services/DBS/DBSReader.py +23 -0
  122. WMCore/Services/DBS/DBSUtils.py +139 -0
  123. WMCore/Services/DBS/DBSWriterObjects.py +381 -0
  124. WMCore/Services/DBS/ProdException.py +133 -0
  125. WMCore/Services/DBS/__init__.py +8 -0
  126. WMCore/Services/FWJRDB/FWJRDBAPI.py +118 -0
  127. WMCore/Services/FWJRDB/__init__.py +0 -0
  128. WMCore/Services/HTTPS/HTTPSAuthHandler.py +66 -0
  129. WMCore/Services/HTTPS/__init__.py +0 -0
  130. WMCore/Services/LogDB/LogDB.py +201 -0
  131. WMCore/Services/LogDB/LogDBBackend.py +191 -0
  132. WMCore/Services/LogDB/LogDBExceptions.py +11 -0
  133. WMCore/Services/LogDB/LogDBReport.py +85 -0
  134. WMCore/Services/LogDB/__init__.py +0 -0
  135. WMCore/Services/MSPileup/__init__.py +0 -0
  136. WMCore/Services/MSUtils/MSUtils.py +54 -0
  137. WMCore/Services/MSUtils/__init__.py +0 -0
  138. WMCore/Services/McM/McM.py +173 -0
  139. WMCore/Services/McM/__init__.py +8 -0
  140. WMCore/Services/MonIT/Grafana.py +133 -0
  141. WMCore/Services/MonIT/__init__.py +0 -0
  142. WMCore/Services/PyCondor/PyCondorAPI.py +154 -0
  143. WMCore/Services/PyCondor/PyCondorUtils.py +105 -0
  144. WMCore/Services/PyCondor/__init__.py +0 -0
  145. WMCore/Services/ReqMgr/ReqMgr.py +261 -0
  146. WMCore/Services/ReqMgr/__init__.py +0 -0
  147. WMCore/Services/ReqMgrAux/ReqMgrAux.py +419 -0
  148. WMCore/Services/ReqMgrAux/__init__.py +0 -0
  149. WMCore/Services/RequestDB/RequestDBReader.py +267 -0
  150. WMCore/Services/RequestDB/RequestDBWriter.py +39 -0
  151. WMCore/Services/RequestDB/__init__.py +0 -0
  152. WMCore/Services/Requests.py +624 -0
  153. WMCore/Services/Rucio/Rucio.py +1287 -0
  154. WMCore/Services/Rucio/RucioUtils.py +74 -0
  155. WMCore/Services/Rucio/__init__.py +0 -0
  156. WMCore/Services/RucioConMon/RucioConMon.py +128 -0
  157. WMCore/Services/RucioConMon/__init__.py +0 -0
  158. WMCore/Services/Service.py +400 -0
  159. WMCore/Services/StompAMQ/__init__.py +0 -0
  160. WMCore/Services/TagCollector/TagCollector.py +155 -0
  161. WMCore/Services/TagCollector/XMLUtils.py +98 -0
  162. WMCore/Services/TagCollector/__init__.py +0 -0
  163. WMCore/Services/UUIDLib.py +13 -0
  164. WMCore/Services/UserFileCache/UserFileCache.py +160 -0
  165. WMCore/Services/UserFileCache/__init__.py +8 -0
  166. WMCore/Services/WMAgent/WMAgent.py +63 -0
  167. WMCore/Services/WMAgent/__init__.py +0 -0
  168. WMCore/Services/WMArchive/CMSSWMetrics.py +526 -0
  169. WMCore/Services/WMArchive/DataMap.py +463 -0
  170. WMCore/Services/WMArchive/WMArchive.py +33 -0
  171. WMCore/Services/WMArchive/__init__.py +0 -0
  172. WMCore/Services/WMBS/WMBS.py +97 -0
  173. WMCore/Services/WMBS/__init__.py +0 -0
  174. WMCore/Services/WMStats/DataStruct/RequestInfoCollection.py +300 -0
  175. WMCore/Services/WMStats/DataStruct/__init__.py +0 -0
  176. WMCore/Services/WMStats/WMStatsPycurl.py +145 -0
  177. WMCore/Services/WMStats/WMStatsReader.py +445 -0
  178. WMCore/Services/WMStats/WMStatsWriter.py +273 -0
  179. WMCore/Services/WMStats/__init__.py +0 -0
  180. WMCore/Services/WMStatsServer/WMStatsServer.py +134 -0
  181. WMCore/Services/WMStatsServer/__init__.py +0 -0
  182. WMCore/Services/WorkQueue/WorkQueue.py +492 -0
  183. WMCore/Services/WorkQueue/__init__.py +0 -0
  184. WMCore/Services/__init__.py +8 -0
  185. WMCore/Services/pycurl_manager.py +574 -0
  186. WMCore/WMBase.py +50 -0
  187. WMCore/WMConnectionBase.py +164 -0
  188. WMCore/WMException.py +183 -0
  189. WMCore/WMExceptions.py +269 -0
  190. WMCore/WMFactory.py +76 -0
  191. WMCore/WMInit.py +228 -0
  192. WMCore/WMLogging.py +108 -0
  193. WMCore/WMSpec/ConfigSectionTree.py +442 -0
  194. WMCore/WMSpec/Persistency.py +135 -0
  195. WMCore/WMSpec/Steps/BuildMaster.py +87 -0
  196. WMCore/WMSpec/Steps/BuildTools.py +201 -0
  197. WMCore/WMSpec/Steps/Builder.py +97 -0
  198. WMCore/WMSpec/Steps/Diagnostic.py +89 -0
  199. WMCore/WMSpec/Steps/Emulator.py +62 -0
  200. WMCore/WMSpec/Steps/ExecuteMaster.py +208 -0
  201. WMCore/WMSpec/Steps/Executor.py +210 -0
  202. WMCore/WMSpec/Steps/StepFactory.py +213 -0
  203. WMCore/WMSpec/Steps/TaskEmulator.py +75 -0
  204. WMCore/WMSpec/Steps/Template.py +204 -0
  205. WMCore/WMSpec/Steps/Templates/AlcaHarvest.py +76 -0
  206. WMCore/WMSpec/Steps/Templates/CMSSW.py +613 -0
  207. WMCore/WMSpec/Steps/Templates/DQMUpload.py +59 -0
  208. WMCore/WMSpec/Steps/Templates/DeleteFiles.py +70 -0
  209. WMCore/WMSpec/Steps/Templates/LogArchive.py +84 -0
  210. WMCore/WMSpec/Steps/Templates/LogCollect.py +105 -0
  211. WMCore/WMSpec/Steps/Templates/StageOut.py +105 -0
  212. WMCore/WMSpec/Steps/Templates/__init__.py +10 -0
  213. WMCore/WMSpec/Steps/WMExecutionFailure.py +21 -0
  214. WMCore/WMSpec/Steps/__init__.py +8 -0
  215. WMCore/WMSpec/Utilities.py +63 -0
  216. WMCore/WMSpec/WMSpecErrors.py +12 -0
  217. WMCore/WMSpec/WMStep.py +347 -0
  218. WMCore/WMSpec/WMTask.py +1980 -0
  219. WMCore/WMSpec/WMWorkload.py +2288 -0
  220. WMCore/WMSpec/WMWorkloadTools.py +370 -0
  221. WMCore/WMSpec/__init__.py +9 -0
  222. WMCore/WorkQueue/DataLocationMapper.py +273 -0
  223. WMCore/WorkQueue/DataStructs/ACDCBlock.py +47 -0
  224. WMCore/WorkQueue/DataStructs/Block.py +48 -0
  225. WMCore/WorkQueue/DataStructs/CouchWorkQueueElement.py +148 -0
  226. WMCore/WorkQueue/DataStructs/WorkQueueElement.py +274 -0
  227. WMCore/WorkQueue/DataStructs/WorkQueueElementResult.py +152 -0
  228. WMCore/WorkQueue/DataStructs/WorkQueueElementsSummary.py +185 -0
  229. WMCore/WorkQueue/DataStructs/__init__.py +0 -0
  230. WMCore/WorkQueue/Policy/End/EndPolicyInterface.py +44 -0
  231. WMCore/WorkQueue/Policy/End/SingleShot.py +22 -0
  232. WMCore/WorkQueue/Policy/End/__init__.py +32 -0
  233. WMCore/WorkQueue/Policy/PolicyInterface.py +17 -0
  234. WMCore/WorkQueue/Policy/Start/Block.py +258 -0
  235. WMCore/WorkQueue/Policy/Start/Dataset.py +180 -0
  236. WMCore/WorkQueue/Policy/Start/MonteCarlo.py +131 -0
  237. WMCore/WorkQueue/Policy/Start/ResubmitBlock.py +171 -0
  238. WMCore/WorkQueue/Policy/Start/StartPolicyInterface.py +316 -0
  239. WMCore/WorkQueue/Policy/Start/__init__.py +34 -0
  240. WMCore/WorkQueue/Policy/__init__.py +57 -0
  241. WMCore/WorkQueue/WMBSHelper.py +772 -0
  242. WMCore/WorkQueue/WorkQueue.py +1237 -0
  243. WMCore/WorkQueue/WorkQueueBackend.py +750 -0
  244. WMCore/WorkQueue/WorkQueueBase.py +39 -0
  245. WMCore/WorkQueue/WorkQueueExceptions.py +44 -0
  246. WMCore/WorkQueue/WorkQueueReqMgrInterface.py +278 -0
  247. WMCore/WorkQueue/WorkQueueUtils.py +130 -0
  248. WMCore/WorkQueue/__init__.py +13 -0
  249. WMCore/Wrappers/JsonWrapper/JSONThunker.py +342 -0
  250. WMCore/Wrappers/JsonWrapper/__init__.py +7 -0
  251. WMCore/Wrappers/__init__.py +6 -0
  252. WMCore/__init__.py +10 -0
  253. wmglobalqueue-2.3.10.data/data/bin/wmc-dist-patch +15 -0
  254. wmglobalqueue-2.3.10.data/data/bin/wmc-dist-unpatch +8 -0
  255. wmglobalqueue-2.3.10.data/data/bin/wmc-httpd +3 -0
  256. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/.couchapprc +1 -0
  257. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/README.md +40 -0
  258. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/_attachments/index.html +264 -0
  259. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/_attachments/js/ElementInfoByWorkflow.js +96 -0
  260. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/_attachments/js/StuckElementInfo.js +57 -0
  261. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/_attachments/js/WorkloadInfoTable.js +80 -0
  262. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/_attachments/js/dataTable.js +70 -0
  263. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/_attachments/js/namespace.js +23 -0
  264. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/_attachments/style/main.css +75 -0
  265. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/couchapp.json +4 -0
  266. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/filters/childQueueFilter.js +13 -0
  267. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/filters/filterDeletedDocs.js +3 -0
  268. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/filters/queueFilter.js +11 -0
  269. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/language +1 -0
  270. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/lib/mustache.js +333 -0
  271. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/lib/validate.js +27 -0
  272. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/lib/workqueue_utils.js +61 -0
  273. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/lists/elementsDetail.js +28 -0
  274. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/lists/filter.js +86 -0
  275. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/lists/stuckElements.js +38 -0
  276. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/lists/workRestrictions.js +153 -0
  277. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/lists/workflowSummary.js +28 -0
  278. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/rewrites.json +73 -0
  279. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/shows/redirect.js +23 -0
  280. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/shows/status.js +40 -0
  281. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/templates/ElementSummaryByWorkflow.html +27 -0
  282. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/templates/StuckElementSummary.html +26 -0
  283. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/templates/TaskStatus.html +23 -0
  284. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/templates/WorkflowSummary.html +27 -0
  285. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/templates/partials/workqueue-common-lib.html +2 -0
  286. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/templates/partials/yui-lib-remote.html +16 -0
  287. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/templates/partials/yui-lib.html +18 -0
  288. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/updates/in-place.js +50 -0
  289. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/validate_doc_update.js +8 -0
  290. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/vendor/couchapp/_attachments/jquery.couch.app.js +235 -0
  291. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/vendor/couchapp/_attachments/jquery.pathbinder.js +173 -0
  292. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/activeData/map.js +8 -0
  293. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/activeData/reduce.js +2 -0
  294. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/activeParentData/map.js +8 -0
  295. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/activeParentData/reduce.js +2 -0
  296. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/activePileupData/map.js +8 -0
  297. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/activePileupData/reduce.js +2 -0
  298. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/analyticsData/map.js +11 -0
  299. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/analyticsData/reduce.js +1 -0
  300. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/availableByPriority/map.js +6 -0
  301. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/conflicts/map.js +5 -0
  302. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elements/map.js +5 -0
  303. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsByData/map.js +8 -0
  304. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsByParent/map.js +8 -0
  305. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsByParentData/map.js +8 -0
  306. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsByPileupData/map.js +8 -0
  307. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsByStatus/map.js +8 -0
  308. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsBySubscription/map.js +6 -0
  309. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsByWorkflow/map.js +8 -0
  310. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsByWorkflow/reduce.js +3 -0
  311. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsDetailByWorkflowAndStatus/map.js +26 -0
  312. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobInjectStatusByRequest/map.js +10 -0
  313. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobInjectStatusByRequest/reduce.js +1 -0
  314. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobStatusByRequest/map.js +6 -0
  315. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobStatusByRequest/reduce.js +1 -0
  316. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndPriority/map.js +6 -0
  317. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndPriority/reduce.js +1 -0
  318. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndStatus/map.js +6 -0
  319. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndStatus/reduce.js +1 -0
  320. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByRequest/map.js +6 -0
  321. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByRequest/reduce.js +1 -0
  322. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByStatus/map.js +6 -0
  323. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByStatus/reduce.js +1 -0
  324. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByStatusAndPriority/map.js +6 -0
  325. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByStatusAndPriority/reduce.js +1 -0
  326. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/openRequests/map.js +6 -0
  327. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/recent-items/map.js +5 -0
  328. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/siteWhitelistByRequest/map.js +6 -0
  329. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/siteWhitelistByRequest/reduce.js +1 -0
  330. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/specsByWorkflow/map.js +5 -0
  331. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/stuckElements/map.js +38 -0
  332. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/wmbsInjectStatusByRequest/map.js +12 -0
  333. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/wmbsInjectStatusByRequest/reduce.js +3 -0
  334. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/wmbsUrl/map.js +6 -0
  335. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/wmbsUrl/reduce.js +2 -0
  336. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/wmbsUrlByRequest/map.js +6 -0
  337. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/wmbsUrlByRequest/reduce.js +2 -0
  338. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/workflowSummary/map.js +9 -0
  339. wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/workflowSummary/reduce.js +10 -0
  340. wmglobalqueue-2.3.10.dist-info/LICENSE +202 -0
  341. wmglobalqueue-2.3.10.dist-info/METADATA +24 -0
  342. wmglobalqueue-2.3.10.dist-info/NOTICE +16 -0
  343. wmglobalqueue-2.3.10.dist-info/RECORD +345 -0
  344. wmglobalqueue-2.3.10.dist-info/WHEEL +5 -0
  345. wmglobalqueue-2.3.10.dist-info/top_level.txt +2 -0
@@ -0,0 +1,127 @@
1
+ #!/usr/bin/env python
2
+ # encoding: utf-8
3
+ """
4
+ CouchObject.py
5
+
6
+ Created by Dave Evans on 2010-07-14.
7
+ Copyright (c) 2010 Fermilab. All rights reserved.
8
+ """
9
+ from __future__ import print_function
10
+
11
+ from builtins import str
12
+ import json as jsonlib
13
+
14
+ import WMCore.Database.CMSCouch as CMSCouch
15
+ import WMCore.GroupUser.Decorators as Decorators
16
+
17
+
18
+ class CouchConnectionError(Exception):
19
+ """docstring for CouchConnectionError"""
20
+
21
+ def __init__(self, arg):
22
+ super(CouchConnectionError, self).__init__()
23
+ self.arg = arg
24
+
25
+
26
+ class CouchObject(dict):
27
+ """
28
+ Base class for dictionary derived couch documents for this package.
29
+ (May even be generally useful...)
30
+
31
+ Essentially a specialised dict class that has attributes needed to talk to Couch
32
+ via the CMSCouch API.
33
+
34
+ This class is expected to be overridden and the derived class must override the document_id
35
+ property to generate the document id from the data within the dictionary.
36
+ This class assumes some simple mapping is used to generate the document ID as a property, rather
37
+ on doing anything too fancy
38
+ """
39
+
40
+ def __init__(self):
41
+ dict.__init__(self)
42
+ self.couch = None
43
+ self.cdb_server = None
44
+ self.cdb_database = None
45
+ self.cdb_url = None
46
+ self.cdb_document_id = None
47
+ self.cdb_document_data = "CouchObject"
48
+
49
+ connected = property(lambda x: x.couch is not None)
50
+ json = property(lambda x: jsonlib.dumps(dict(x)))
51
+ # doc_id default returns None, which signals use couch-generated doc id
52
+ document_id = property(lambda x: None)
53
+
54
+ def setCouch(self, url, database):
55
+ """
56
+ _setCouch_
57
+
58
+ Set the contant info for the couch database
59
+ """
60
+ self.cdb_url = url
61
+ self.cdb_database = database
62
+
63
+ def connect(self):
64
+ """
65
+ _connect_
66
+
67
+ Initialise the couch database connection for this object.
68
+ This gets called automagically by the requireConnected decorator
69
+ """
70
+ if self.connected:
71
+ return
72
+ if self.cdb_url is None:
73
+ msg = "url for couch service not provided"
74
+ raise CouchConnectionError(msg)
75
+ if self.cdb_database is None:
76
+ msg = "database name for couch service not provided"
77
+ raise CouchConnectionError(msg)
78
+ try:
79
+ self.cdb_server = CMSCouch.CouchServer(self.cdb_url)
80
+ self.couch = self.cdb_server.connectDatabase(self.cdb_database)
81
+ except Exception as ex:
82
+ msg = "Exception instantiating couch services for :\n"
83
+ msg += " url = %s\n database = %s\n" % (self.cdb_url, self.cdb_database)
84
+ msg += " Exception: %s" % str(ex)
85
+ print(msg)
86
+ raise CouchConnectionError(msg)
87
+
88
+ @Decorators.requireConnection
89
+ def create(self):
90
+ """
91
+ _create_
92
+
93
+ Create the couch document for this object.
94
+ """
95
+ if not self.couch.documentExists(self.document_id):
96
+ couchDoc = CMSCouch.Document(self.document_id, {self.cdb_document_data: dict(self)})
97
+ self.couch.commitOne(couchDoc)
98
+
99
+ @Decorators.requireConnection
100
+ def get(self):
101
+ """
102
+ _get_
103
+
104
+ given the doc_id generated from the derived class, get the document and update
105
+ the data in the dictionary from it
106
+
107
+ """
108
+ if not self.couch.documentExists(self.document_id):
109
+ raise RuntimeError("Document: %s not found" % self.document_id)
110
+
111
+ doc = self.couch.document(self.document_id)
112
+ data = doc.get(self.cdb_document_data, {})
113
+ dict.update(self, data)
114
+ return
115
+
116
+ @Decorators.requireConnection
117
+ def drop(self):
118
+ """
119
+ _drop_
120
+
121
+ remove the doc representing this object, possibly with a chained wipeout
122
+ of all other docs referencing it by owner or group or whatever, if thats
123
+ needed, override in the classes derived from this
124
+ """
125
+ if not self.couch.documentExists(self.document_id):
126
+ raise RuntimeError("Document: %s not found" % self.document_id)
127
+ self.couch.delete_doc(self.document_id)
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env python
2
+ # encoding: utf-8
3
+ """
4
+ Decorators.py
5
+
6
+ Decorator Utils for GroupUser modules
7
+
8
+ Created by Dave Evans on 2010-07-20.
9
+ Copyright (c) 2010 Fermilab. All rights reserved.
10
+ """
11
+
12
+ def requireConnection(funcRef):
13
+ """
14
+ _requireConnection_
15
+
16
+ Decorator method to connect the function's class object to couch
17
+ """
18
+ def wrapper(self, *args, **opts):
19
+ if not self.connected:
20
+ self.connect()
21
+ return funcRef(self, *args, **opts)
22
+ return wrapper
23
+
24
+ def requireGroup(funcRef):
25
+ """
26
+ _requireGroup_
27
+
28
+ Decorator method to enforce setting a group attribute
29
+
30
+ """
31
+ def wrapper(self, *args, **opts):
32
+ if getattr(self, "group", None) == None:
33
+ msg = "Group Attribute not present/set"
34
+ raise RuntimeError(msg)
35
+ return funcRef(self, *args, **opts)
36
+ return wrapper
37
+
38
+
39
+ def requireUser(funcRef):
40
+ """
41
+ _requireUser_
42
+
43
+ Decorator method to enforce setting a user attribute for another
44
+ object
45
+ """
46
+ def wrapper(self, *args, **opts):
47
+ if getattr(self, "owner", None) == None:
48
+ msg = "Group Attribute not present/set"
49
+ raise RuntimeError(msg)
50
+ return funcRef(self, *args, **opts)
51
+ return wrapper
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env python
2
+ # encoding: utf-8
3
+ """
4
+ Group.py
5
+
6
+ Created by Dave Evans on 2010-07-14.
7
+ Copyright (c) 2010 Fermilab. All rights reserved.
8
+ """
9
+
10
+
11
+
12
+ import json
13
+
14
+ from WMCore.GroupUser.CouchObject import CouchObject
15
+
16
+
17
+ class Group(CouchObject):
18
+ """
19
+ _Group_
20
+
21
+ Dictionary object containing attributes of a group
22
+
23
+ """
24
+ def __init__(self, **options):
25
+ CouchObject.__init__(self)
26
+ self.cdb_document_data = "group"
27
+ self.setdefault('name', None)
28
+ self.setdefault('administrators', [])
29
+ self.setdefault('associated_sites', {})
30
+ self.update(options)
31
+
32
+ document_id = property(lambda x : "group-%s" % x['name'] )
33
+ name = property(lambda x: x['name'])
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env python
2
+ # encoding: utf-8
3
+ """
4
+ Interface.py
5
+
6
+ Created by Dave Evans on 2010-07-21.
7
+ Copyright (c) 2010 Fermilab. All rights reserved.
8
+ """
9
+ from __future__ import print_function
10
+
11
+
12
+
13
+ from builtins import str, object
14
+
15
+ import WMCore.Database.CMSCouch as CMSCouch
16
+
17
+ class CouchConnectionError(Exception):
18
+ """docstring for CouchConnectionError"""
19
+ def __init__(self, arg):
20
+ super(CouchConnectionError, self).__init__()
21
+ self.arg = arg
22
+
23
+
24
+ class Interface(object):
25
+ def __init__(self, couchUrl, couchDatabase):
26
+ self.cdb_url = couchUrl
27
+ self.cdb_database = couchDatabase
28
+ try:
29
+ self.cdb_server = CMSCouch.CouchServer(self.cdb_url)
30
+ self.couch = self.cdb_server.connectDatabase(self.cdb_database)
31
+ except Exception as ex:
32
+ msg = "Exception instantiating couch services for :\n"
33
+ msg += " url = %s\n database = %s\n" % (self.cdb_url, self.cdb_database)
34
+ msg += " Exception: %s" % str(ex)
35
+ print(msg)
36
+ raise CouchConnectionError(msg)
37
+
38
+
39
+ def documentsOwned(self, group, user):
40
+ """
41
+ _documentsOwned_
42
+
43
+ Get a list of doc IDs that are owned by the group/user pair
44
+
45
+ """
46
+ result = self.couch.loadView("GroupUser", 'owner_group_user',
47
+ {'startkey' :[group, user],
48
+ 'endkey' : [group, user]}, []
49
+ )
50
+ output = [str(x[u'id']) for x in result[u'rows']]
51
+ return output
52
+
53
+
54
+
55
+ def callUpdate(self, update, document, **args ):
56
+ """
57
+ _callUpdate_
58
+
59
+ Wrapper primarily for calling/testing update methods on the groupuser couchapp
60
+
61
+ * update - name of the update method in the couchapp
62
+ * document - ID of the document to be updated
63
+ * args - key:value dict of args to be encoded in the PUT request
64
+
65
+ """
66
+ updateUri = "/" + self.couch.name + "/_design/GroupUser/_update/"+ update + "/" + document
67
+ argsstr = "?"
68
+ for k, v in list(args.items()):
69
+ argsstr += "%s=%s&" % (k, v)
70
+ updateUri += argsstr
71
+ updateUri= updateUri[:-1]
72
+ self.couch.makeRequest(uri = updateUri, type = "PUT", decode = False)
73
+ return
@@ -0,0 +1,96 @@
1
+ #!/usr/bin/env python
2
+ # encoding: utf-8
3
+ """
4
+ User.py
5
+
6
+ Created by Dave Evans on 2010-07-14.
7
+ Copyright (c) 2010 Fermilab. All rights reserved.
8
+ """
9
+
10
+ from WMCore.GroupUser.CouchObject import CouchObject
11
+ import WMCore.GroupUser.Decorators as Decorators
12
+ from WMCore.GroupUser.Group import Group
13
+
14
+
15
+
16
+ class User(CouchObject):
17
+ """
18
+ _User_
19
+
20
+
21
+ """
22
+ def __init__(self, **options):
23
+ CouchObject.__init__(self)
24
+ self.cdb_document_data = "user"
25
+ self.setdefault('name', None)
26
+ self.setdefault('proxy', {})
27
+ self.couch_url = None
28
+ self.couch_db = None
29
+ self.group = None
30
+ self.update(options)
31
+
32
+ document_id = property(lambda x : "user-%s" % x['name'] )
33
+ name = property(lambda x: x['name'])
34
+
35
+ def setGroup(self, groupInstance):
36
+ """
37
+ _setGroup_
38
+
39
+ Set the group attribute of this object
40
+ """
41
+ self.group = groupInstance
42
+ self['group'] = groupInstance['name']
43
+ if groupInstance.connected:
44
+ # if the group already has the couch instance in it, borrow those settings
45
+ self.setCouch(groupInstance.cdb_url, groupInstance.cdb_database)
46
+
47
+ @Decorators.requireConnection
48
+ @Decorators.requireGroup
49
+ def ownThis(self, document):
50
+ """
51
+ _ownThis_
52
+
53
+ Given a Couch Document, insert the details of this owner in a standard
54
+ way so that the document can be found using the standard group/user views
55
+ Note: if doc doesnt have both _id and _rev keys this change wont stick
56
+ """
57
+ document['owner'] = {}
58
+ document['owner']['user'] = self['name']
59
+ document['owner']['group'] = self.group['name']
60
+
61
+ retval = self.couch.commitOne(document)
62
+ document["_id"] = retval[0]["id"]
63
+ document["_rev"] = retval[0]["rev"]
64
+ return
65
+
66
+ @Decorators.requireConnection
67
+ @Decorators.requireGroup
68
+ def create(self):
69
+ """
70
+ _create_
71
+
72
+ Overide the base class create to make sure the group exists when adding the user
73
+ (Note: Overriding wipes out decorators...)
74
+ """
75
+ if not self.couch.documentExists(self.group.document_id):
76
+ # no group => create group
77
+ self.group.create()
78
+ # call base create to make user
79
+ CouchObject.create(self)
80
+
81
+ #ToDo: Override drop to drop all documents owned by the owner...
82
+
83
+ def makeUser(groupname, username, couchUrl = None, couchDatabase = None):
84
+ """
85
+ _makeUser_
86
+
87
+ factory like util that creates a user and group object
88
+
89
+ """
90
+ group = Group(name = groupname)
91
+ if couchUrl != None:
92
+ group.setCouch(couchUrl, couchDatabase)
93
+ group.connect()
94
+ user = User(name = username)
95
+ user.setGroup(group)
96
+ return user
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env python
2
+ # encoding: utf-8
3
+ """
4
+ __init__.py
5
+
6
+ Created by Dave Evans on 2010-07-14.
7
+ Copyright (c) 2010 Fermilab. All rights reserved.
8
+ """
9
+
10
+ import sys
11
+ import os