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,342 @@
1
+ from __future__ import print_function
2
+
3
+ from builtins import str, bytes, int
4
+ from future.utils import viewitems
5
+ from Utils.PythonVersion import PY2
6
+
7
+ import sys
8
+ import types
9
+
10
+
11
+ class _EmptyClass(object):
12
+ pass
13
+
14
+
15
+ class JSONThunker(object):
16
+ """
17
+ _JSONThunker_
18
+ Converts an arbitrary object to <-> from a jsonable object.
19
+
20
+ Will, for the most part "do the right thing" about various instance objects
21
+ by storing their class information along with their data in a dict. Handles
22
+ a recursion limit to prevent infinite recursion.
23
+
24
+ self.passThroughTypes - stores a list of types that should be passed
25
+ through unchanged to the JSON parser
26
+
27
+ self.blackListedModules - a list of modules that should not be stored in
28
+ the JSON.
29
+
30
+ """
31
+
32
+ def __init__(self):
33
+ self.passThroughTypes = (type(None),
34
+ bool,
35
+ int,
36
+ float,
37
+ complex,
38
+ str,
39
+ bytes,
40
+ )
41
+ # objects that inherit from dict should be treated as a dict
42
+ # they don't store their data in __dict__. There was enough
43
+ # of those classes that it warrented making a special case
44
+ self.dictSortOfObjects = (('WMCore.Datastructs.Job', 'Job'),
45
+ ('WMCore.WMBS.Job', 'Job'),
46
+ ('WMCore.Database.CMSCouch', 'Document'))
47
+ # ditto above, but for lists
48
+ self.listSortOfObjects = (('WMCore.DataStructs.JobPackage', 'JobPackage'),
49
+ ('WMCore.WMBS.JobPackage', 'JobPackage'),)
50
+
51
+ self.foundIDs = {}
52
+ # modules we don't want JSONed
53
+ self.blackListedModules = ('sqlalchemy.engine.threadlocal',
54
+ 'WMCore.Database.DBCore',
55
+ 'logging',
56
+ 'WMCore.DAOFactory',
57
+ 'WMCore.WMFactory',
58
+ 'WMFactory',
59
+ 'WMCore.Configuration',
60
+ 'WMCore.Database.Transaction',
61
+ 'threading',
62
+ 'datetime')
63
+
64
+ def checkRecursion(self, data):
65
+ """
66
+ handles checking for infinite recursion
67
+ """
68
+ if id(data) in self.foundIDs:
69
+ if self.foundIDs[id(data)] > 5:
70
+ self.unrecurse(data)
71
+ return "**RECURSION**"
72
+ else:
73
+ self.foundIDs[id(data)] += 1
74
+ return data
75
+ else:
76
+ self.foundIDs[id(data)] = 1
77
+ return data
78
+
79
+ def unrecurse(self, data):
80
+ """
81
+ backs off the recursion counter if we're returning from _thunk
82
+ """
83
+ try:
84
+ self.foundIDs[id(data)] -= 1
85
+ except:
86
+ print("Could not find count for id %s of type %s data %s" % (id(data), type(data), data))
87
+ raise
88
+
89
+ def checkBlackListed(self, data):
90
+ """
91
+ checks to see if a given object is from a blacklisted module
92
+ """
93
+ try:
94
+ # special case
95
+ if data.__class__.__module__ == 'WMCore.Database.CMSCouch' and data.__class__.__name__ == 'Document':
96
+ data.__class__ = type({})
97
+ return data
98
+ if data.__class__.__module__ in self.blackListedModules:
99
+ return "Blacklisted JSON object: module %s, name %s, str() %s" % \
100
+ (data.__class__.__module__, data.__class__.__name__, str(data))
101
+ else:
102
+ return data
103
+ except Exception:
104
+ return data
105
+
106
+ def thunk(self, toThunk):
107
+ """
108
+ Thunk - turns an arbitrary object into a JSONable object
109
+ """
110
+ self.foundIDs = {}
111
+ data = self._thunk(toThunk)
112
+ return data
113
+
114
+ def unthunk(self, data):
115
+ """
116
+ unthunk - turns a previously 'thunked' object back into a python object
117
+ """
118
+ return self._unthunk(data)
119
+
120
+ def handleSetThunk(self, toThunk):
121
+ toThunk = self.checkRecursion(toThunk)
122
+ tempDict = {'thunker_encoded_json': True, 'type': 'set'}
123
+ tempDict['set'] = self._thunk(list(toThunk))
124
+ self.unrecurse(toThunk)
125
+ return tempDict
126
+
127
+ def handleListThunk(self, toThunk):
128
+ toThunk = self.checkRecursion(toThunk)
129
+ for k, v in enumerate(toThunk):
130
+ toThunk[k] = self._thunk(v)
131
+ self.unrecurse(toThunk)
132
+ return toThunk
133
+
134
+ def handleDictThunk(self, toThunk):
135
+ toThunk = self.checkRecursion(toThunk)
136
+ special = False
137
+ tmpdict = {}
138
+ for k, v in viewitems(toThunk):
139
+ if type(k) == type(int):
140
+ special = True
141
+ tmpdict['_i:%s' % k] = self._thunk(v)
142
+ elif type(k) == type(float):
143
+ special = True
144
+ tmpdict['_f:%s' % k] = self._thunk(v)
145
+ else:
146
+ tmpdict[k] = self._thunk(v)
147
+ if special:
148
+ toThunk['thunker_encoded_json'] = self._thunk(True)
149
+ toThunk['type'] = self._thunk('dict')
150
+ toThunk['dict'] = tmpdict
151
+ else:
152
+ toThunk.update(tmpdict)
153
+ self.unrecurse(toThunk)
154
+ return toThunk
155
+
156
+ def handleObjectThunk(self, toThunk):
157
+ toThunk = self.checkRecursion(toThunk)
158
+ toThunk = self.checkBlackListed(toThunk)
159
+
160
+ if isinstance(toThunk, (str, bytes)):
161
+ # things that got blacklisted
162
+ return toThunk
163
+ if hasattr(toThunk, '__to_json__'):
164
+ # Use classes own json thunker
165
+ toThunk2 = toThunk.__to_json__(self)
166
+ self.unrecurse(toThunk)
167
+ return toThunk2
168
+ elif isinstance(toThunk, dict):
169
+ toThunk2 = self.handleDictObjectThunk(toThunk)
170
+ self.unrecurse(toThunk)
171
+ return toThunk2
172
+ elif isinstance(toThunk, list):
173
+ # a mother thunking list
174
+ toThunk2 = self.handleListObjectThunk(toThunk)
175
+ self.unrecurse(toThunk)
176
+ return toThunk2
177
+ else:
178
+ try:
179
+ thunktype = '%s.%s' % (toThunk.__class__.__module__,
180
+ toThunk.__class__.__name__)
181
+ tempDict = {'thunker_encoded_json': True, 'type': thunktype}
182
+ tempDict[thunktype] = self._thunk(toThunk.__dict__)
183
+ self.unrecurse(toThunk)
184
+ return tempDict
185
+ except Exception as e:
186
+ tempDict = {'json_thunk_exception_': "%s" % e}
187
+ self.unrecurse(toThunk)
188
+ return tempDict
189
+
190
+ def handleDictObjectThunk(self, data):
191
+ thunktype = '%s.%s' % (data.__class__.__module__,
192
+ data.__class__.__name__)
193
+ tempDict = {'thunker_encoded_json': True,
194
+ 'is_dict': True,
195
+ 'type': thunktype,
196
+ thunktype: {}}
197
+
198
+ for k, v in viewitems(data.__dict__):
199
+ tempDict[k] = self._thunk(v)
200
+ for k, v in viewitems(data):
201
+ tempDict[thunktype][k] = self._thunk(v)
202
+
203
+ return tempDict
204
+
205
+ def handleDictObjectUnThunk(self, value, data):
206
+ data.pop('thunker_encoded_json', False)
207
+ data.pop('is_dict', False)
208
+ thunktype = data.pop('type', False)
209
+
210
+ for k, v in viewitems(data):
211
+ if k == thunktype:
212
+ for k2, v2 in viewitems(data[thunktype]):
213
+ value[k2] = self._unthunk(v2)
214
+ else:
215
+ value.__dict__[k] = self._unthunk(v)
216
+ return value
217
+
218
+ def handleListObjectThunk(self, data):
219
+ thunktype = '%s.%s' % (data.__class__.__module__,
220
+ data.__class__.__name__)
221
+ tempDict = {'thunker_encoded_json': True,
222
+ 'is_list': True,
223
+ 'type': thunktype,
224
+ thunktype: []}
225
+ for k, v in enumerate(data):
226
+ tempDict['thunktype'].append(self._thunk(v))
227
+ for k, v in viewitems(data.__dict__):
228
+ tempDict[k] = self._thunk(v)
229
+ return tempDict
230
+
231
+ def handleListObjectUnThunk(self, value, data):
232
+ data.pop('thunker_encoded_json', False)
233
+ data.pop('is_list', False)
234
+ thunktype = data.pop('type')
235
+ for k, v in viewitems(data[thunktype]):
236
+ setattr(value, k, self._unthunk(v))
237
+
238
+ for k, v in viewitems(data):
239
+ if k == thunktype:
240
+ continue
241
+ value.__dict__ = self._unthunk(v)
242
+ return value
243
+
244
+ def _thunk(self, toThunk):
245
+ """
246
+ helper function for thunk, does the actual work
247
+ """
248
+ if isinstance(toThunk, self.passThroughTypes):
249
+ return toThunk
250
+ elif type(toThunk) is list:
251
+ return self.handleListThunk(toThunk)
252
+ elif type(toThunk) is dict:
253
+ return self.handleDictThunk(toThunk)
254
+ elif type(toThunk) is set:
255
+ return self.handleSetThunk(toThunk)
256
+ elif type(toThunk) is types.FunctionType:
257
+ self.unrecurse(toThunk)
258
+ return "function reference"
259
+ elif isinstance(toThunk, object):
260
+ return self.handleObjectThunk(toThunk)
261
+ else:
262
+ self.unrecurse(toThunk)
263
+ raise RuntimeError(type(toThunk))
264
+
265
+ def _unthunk(self, jsondata):
266
+ """
267
+ _unthunk - does the actual work for unthunk
268
+ """
269
+ if PY2 and type(jsondata) is str:
270
+ return jsondata.encode("utf-8")
271
+ if type(jsondata) is dict:
272
+ if 'thunker_encoded_json' in jsondata:
273
+ # we've got a live one...
274
+ if jsondata['type'] == 'set':
275
+ newSet = set()
276
+ for i in self._unthunk(jsondata['set']):
277
+ newSet.add(self._unthunk(i))
278
+ return newSet
279
+ if jsondata['type'] == 'dict':
280
+ # We have a "special" dict
281
+ data = {}
282
+ for k, v in viewitems(jsondata['dict']):
283
+ tmp = self._unthunk(v)
284
+ if k.startswith('_i:'):
285
+ data[int(k.lstrip('_i:'))] = tmp
286
+ elif k.startswith('_f:'):
287
+ data[float(k.lstrip('_f:'))] = tmp
288
+ else:
289
+ data[k] = tmp
290
+ return data
291
+ else:
292
+ # spawn up an instance.. good luck
293
+ # here be monsters
294
+ # inspired from python's pickle code
295
+ ourClass = self.getThunkedClass(jsondata)
296
+
297
+ value = _EmptyClass()
298
+ if hasattr(ourClass, '__from_json__'):
299
+ # Use classes own json loader
300
+ try:
301
+ value.__class__ = ourClass
302
+ except Exception:
303
+ value = ourClass()
304
+ value = ourClass.__from_json__(value, jsondata, self)
305
+ elif 'thunker_encoded_json' in jsondata and 'is_dict' in jsondata:
306
+ try:
307
+ value.__class__ = ourClass
308
+ except Exception:
309
+ value = ourClass()
310
+ value = self.handleDictObjectUnThunk(value, jsondata)
311
+ elif 'thunker_encoded_json' in jsondata:
312
+ try:
313
+ value.__class__ = ourClass
314
+ except Exception:
315
+ value = ourClass()
316
+ value = self.handleListObjectUnThunk(value, jsondata)
317
+ else:
318
+ raise RuntimeError('Could not unthunk a class. Code to try was removed because it had errors.')
319
+ return value
320
+ else:
321
+ data = {}
322
+ for k, v in viewitems(jsondata):
323
+ data[k] = self._unthunk(v)
324
+ return data
325
+
326
+ else:
327
+ return jsondata
328
+
329
+ @staticmethod
330
+ def getThunkedClass(jsondata):
331
+ """
332
+ Work out the class from it's thunked json representation
333
+ """
334
+ module = jsondata['type'].rsplit('.', 1)[0]
335
+ name = jsondata['type'].rsplit('.', 1)[1]
336
+ if (module == 'WMCore.Services.Requests') and (name == JSONThunker):
337
+ raise RuntimeError("Attempted to unthunk a JSONThunker..")
338
+
339
+ __import__(module)
340
+ mod = sys.modules[module]
341
+ ourClass = getattr(mod, name)
342
+ return ourClass
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: ISO-8859-1 -*-
3
+
4
+ """
5
+ We used to have a wrapper here to wrap different JSON implementations. No longer needed with python 2.7
6
+ """
7
+
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env python
2
+ #-*- coding: ISO-8859-1 -*-
3
+
4
+ """
5
+ WMCore wrappers.
6
+ """
WMCore/__init__.py ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env python
2
+ """
3
+ _WMCore_
4
+
5
+ Core libraries for Workload Management Packages
6
+
7
+ """
8
+
9
+ __version__ = '2.4.5.1'
10
+ __all__ = []
@@ -0,0 +1,15 @@
1
+ #!/bin/sh
2
+ # Script to patch the server from the local developer area. The user's
3
+ # stuff goes into xbin/xlib/xpython directories, which are in front of
4
+ # the server's own bin/lib/python directories. So anything in x* will
5
+ # be picked up in preference to the server-distributed files.
6
+
7
+ R=${WMCORE_ROOT-$(dirname $(dirname $0))}
8
+ [ X"$R" = X ] && { echo '$WMCORE_ROOT not set' 1>&2; exit 1; }
9
+
10
+ [ -x $R/bin/wmc-dist-patch ] || { echo "$R does not appear to be the right place" 1>&2; exit 1; }
11
+
12
+ set -ex
13
+ rm -fr $R/x{lib,bin,python,data,doc}/{*,.??*}
14
+ python setup.py build_system ${1+"$@"}
15
+ python setup.py install_system ${1+"$@"} --patch --prefix=$R
@@ -0,0 +1,8 @@
1
+ #!/bin/sh
2
+ # Script to unpatch the server area. Simply clears out xbin/xlib/xpython
3
+ # so the server will then pick up the files distributed with the RPM.
4
+
5
+ R=${WMCORE_ROOT-$(dirname $(dirname $0))}
6
+ [ X"$R" = X ] && { echo '$WMCORE_ROOT not set' 1>&2; exit 1; }
7
+ [ -x $R/bin/wmc-dist-patch ] || { echo "$R does not appear to be the right place" 1>&2; exit 1; }
8
+ exec rm -fr $R/x{lib,bin,python,data,doc}/{*,.??*}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env python
2
+ from WMCore.REST.Main import main
3
+ main()
@@ -0,0 +1,40 @@
1
+ ## Generated by CouchApp
2
+
3
+ CouchApps are web applications which can be served directly from [CouchDB](http://couchdb.apache.org). This gives them the nice property of replicating just like any other data stored in CouchDB. They are also simple to write as they can use the built-in jQuery libraries and plugins that ship with CouchDB.
4
+
5
+ [More info about CouchApps here.](http://couchapp.org)
6
+
7
+ ## Deploying this app
8
+
9
+ Assuming you just cloned this app from git, and you have changed into the app directory in your terminal, you want to push it to your CouchDB with the CouchApp command line tool, like this:
10
+
11
+ couchapp push . http://name:password@hostname:5984/mydatabase
12
+
13
+ If you don't have a password on your CouchDB (admin party) you can do it like this (but it's a bad, idea, set a password):
14
+
15
+ couchapp push . http://hostname:5984/mydatabase
16
+
17
+ If you get sick of typing the URL, you should setup a `.couchapprc` file in the root of your directory. Remember not to check this into version control as it will have passwords in it.
18
+
19
+ The `.couchapprc` file should have contents like this:
20
+
21
+ {
22
+ "env" : {
23
+ "public" : {
24
+ "db" : "http://name:pass@mycouch.couchone.com/mydatabase"
25
+ },
26
+ "default" : {
27
+ "db" : "http://name:pass@localhost:5984/mydatabase"
28
+ }
29
+ }
30
+ }
31
+
32
+ Now that you have the `.couchapprc` file set up, you can push your app to the CouchDB as simply as:
33
+
34
+ couchapp push
35
+
36
+ This pushes to the `default` as specified. To push to the `public` you'd run:
37
+
38
+ couchapp push public
39
+
40
+ Of course you can continue to add more deployment targets as you see fit, and give them whatever names you like.