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.
- Utils/CPMetrics.py +270 -0
- Utils/CertTools.py +62 -0
- Utils/EmailAlert.py +50 -0
- Utils/ExtendedUnitTestCase.py +62 -0
- Utils/FileTools.py +182 -0
- Utils/IteratorTools.py +80 -0
- Utils/MathUtils.py +31 -0
- Utils/MemoryCache.py +119 -0
- Utils/Patterns.py +24 -0
- Utils/Pipeline.py +137 -0
- Utils/PortForward.py +97 -0
- Utils/ProcessStats.py +103 -0
- Utils/PythonVersion.py +17 -0
- Utils/Signals.py +36 -0
- Utils/TemporaryEnvironment.py +27 -0
- Utils/Throttled.py +227 -0
- Utils/Timers.py +130 -0
- Utils/Timestamps.py +86 -0
- Utils/TokenManager.py +143 -0
- Utils/Tracing.py +60 -0
- Utils/TwPrint.py +98 -0
- Utils/Utilities.py +308 -0
- Utils/__init__.py +11 -0
- WMCore/ACDC/Collection.py +57 -0
- WMCore/ACDC/CollectionTypes.py +12 -0
- WMCore/ACDC/CouchCollection.py +67 -0
- WMCore/ACDC/CouchFileset.py +238 -0
- WMCore/ACDC/CouchService.py +73 -0
- WMCore/ACDC/DataCollectionService.py +485 -0
- WMCore/ACDC/Fileset.py +94 -0
- WMCore/ACDC/__init__.py +11 -0
- WMCore/Algorithms/Alarm.py +39 -0
- WMCore/Algorithms/MathAlgos.py +274 -0
- WMCore/Algorithms/MiscAlgos.py +67 -0
- WMCore/Algorithms/ParseXMLFile.py +115 -0
- WMCore/Algorithms/Permissions.py +27 -0
- WMCore/Algorithms/Singleton.py +58 -0
- WMCore/Algorithms/SubprocessAlgos.py +129 -0
- WMCore/Algorithms/__init__.py +7 -0
- WMCore/Cache/GenericDataCache.py +98 -0
- WMCore/Cache/WMConfigCache.py +572 -0
- WMCore/Cache/__init__.py +0 -0
- WMCore/Configuration.py +651 -0
- WMCore/DAOFactory.py +47 -0
- WMCore/DataStructs/File.py +177 -0
- WMCore/DataStructs/Fileset.py +140 -0
- WMCore/DataStructs/Job.py +182 -0
- WMCore/DataStructs/JobGroup.py +142 -0
- WMCore/DataStructs/JobPackage.py +49 -0
- WMCore/DataStructs/LumiList.py +734 -0
- WMCore/DataStructs/Mask.py +219 -0
- WMCore/DataStructs/MathStructs/ContinuousSummaryHistogram.py +197 -0
- WMCore/DataStructs/MathStructs/DiscreteSummaryHistogram.py +92 -0
- WMCore/DataStructs/MathStructs/SummaryHistogram.py +117 -0
- WMCore/DataStructs/MathStructs/__init__.py +0 -0
- WMCore/DataStructs/Pickleable.py +24 -0
- WMCore/DataStructs/Run.py +256 -0
- WMCore/DataStructs/Subscription.py +175 -0
- WMCore/DataStructs/WMObject.py +47 -0
- WMCore/DataStructs/WorkUnit.py +112 -0
- WMCore/DataStructs/Workflow.py +60 -0
- WMCore/DataStructs/__init__.py +8 -0
- WMCore/Database/CMSCouch.py +1349 -0
- WMCore/Database/ConfigDBMap.py +29 -0
- WMCore/Database/CouchUtils.py +118 -0
- WMCore/Database/DBCore.py +198 -0
- WMCore/Database/DBCreator.py +113 -0
- WMCore/Database/DBExceptionHandler.py +57 -0
- WMCore/Database/DBFactory.py +110 -0
- WMCore/Database/DBFormatter.py +177 -0
- WMCore/Database/Dialects.py +13 -0
- WMCore/Database/ExecuteDAO.py +327 -0
- WMCore/Database/MongoDB.py +241 -0
- WMCore/Database/MySQL/Destroy.py +42 -0
- WMCore/Database/MySQL/ListUserContent.py +20 -0
- WMCore/Database/MySQL/__init__.py +9 -0
- WMCore/Database/MySQLCore.py +132 -0
- WMCore/Database/Oracle/Destroy.py +56 -0
- WMCore/Database/Oracle/ListUserContent.py +19 -0
- WMCore/Database/Oracle/__init__.py +9 -0
- WMCore/Database/ResultSet.py +44 -0
- WMCore/Database/Transaction.py +91 -0
- WMCore/Database/__init__.py +9 -0
- WMCore/Database/ipy_profile_couch.py +438 -0
- WMCore/GlobalWorkQueue/CherryPyThreads/CleanUpTask.py +29 -0
- WMCore/GlobalWorkQueue/CherryPyThreads/HeartbeatMonitor.py +105 -0
- WMCore/GlobalWorkQueue/CherryPyThreads/LocationUpdateTask.py +28 -0
- WMCore/GlobalWorkQueue/CherryPyThreads/ReqMgrInteractionTask.py +35 -0
- WMCore/GlobalWorkQueue/CherryPyThreads/__init__.py +0 -0
- WMCore/GlobalWorkQueue/__init__.py +0 -0
- WMCore/GroupUser/CouchObject.py +127 -0
- WMCore/GroupUser/Decorators.py +51 -0
- WMCore/GroupUser/Group.py +33 -0
- WMCore/GroupUser/Interface.py +73 -0
- WMCore/GroupUser/User.py +96 -0
- WMCore/GroupUser/__init__.py +11 -0
- WMCore/Lexicon.py +836 -0
- WMCore/REST/Auth.py +202 -0
- WMCore/REST/CherryPyPeriodicTask.py +166 -0
- WMCore/REST/Error.py +333 -0
- WMCore/REST/Format.py +642 -0
- WMCore/REST/HeartbeatMonitorBase.py +90 -0
- WMCore/REST/Main.py +623 -0
- WMCore/REST/Server.py +2435 -0
- WMCore/REST/Services.py +24 -0
- WMCore/REST/Test.py +120 -0
- WMCore/REST/Tools.py +38 -0
- WMCore/REST/Validation.py +250 -0
- WMCore/REST/__init__.py +1 -0
- WMCore/ReqMgr/DataStructs/RequestStatus.py +209 -0
- WMCore/ReqMgr/DataStructs/RequestType.py +13 -0
- WMCore/ReqMgr/DataStructs/__init__.py +0 -0
- WMCore/ReqMgr/__init__.py +1 -0
- WMCore/Services/AlertManager/AlertManagerAPI.py +111 -0
- WMCore/Services/AlertManager/__init__.py +0 -0
- WMCore/Services/CRIC/CRIC.py +238 -0
- WMCore/Services/CRIC/__init__.py +0 -0
- WMCore/Services/DBS/DBS3Reader.py +1044 -0
- WMCore/Services/DBS/DBSConcurrency.py +44 -0
- WMCore/Services/DBS/DBSErrors.py +113 -0
- WMCore/Services/DBS/DBSReader.py +23 -0
- WMCore/Services/DBS/DBSUtils.py +139 -0
- WMCore/Services/DBS/DBSWriterObjects.py +381 -0
- WMCore/Services/DBS/ProdException.py +133 -0
- WMCore/Services/DBS/__init__.py +8 -0
- WMCore/Services/FWJRDB/FWJRDBAPI.py +118 -0
- WMCore/Services/FWJRDB/__init__.py +0 -0
- WMCore/Services/HTTPS/HTTPSAuthHandler.py +66 -0
- WMCore/Services/HTTPS/__init__.py +0 -0
- WMCore/Services/LogDB/LogDB.py +201 -0
- WMCore/Services/LogDB/LogDBBackend.py +191 -0
- WMCore/Services/LogDB/LogDBExceptions.py +11 -0
- WMCore/Services/LogDB/LogDBReport.py +85 -0
- WMCore/Services/LogDB/__init__.py +0 -0
- WMCore/Services/MSPileup/__init__.py +0 -0
- WMCore/Services/MSUtils/MSUtils.py +54 -0
- WMCore/Services/MSUtils/__init__.py +0 -0
- WMCore/Services/McM/McM.py +173 -0
- WMCore/Services/McM/__init__.py +8 -0
- WMCore/Services/MonIT/Grafana.py +133 -0
- WMCore/Services/MonIT/__init__.py +0 -0
- WMCore/Services/PyCondor/PyCondorAPI.py +154 -0
- WMCore/Services/PyCondor/PyCondorUtils.py +105 -0
- WMCore/Services/PyCondor/__init__.py +0 -0
- WMCore/Services/ReqMgr/ReqMgr.py +261 -0
- WMCore/Services/ReqMgr/__init__.py +0 -0
- WMCore/Services/ReqMgrAux/ReqMgrAux.py +419 -0
- WMCore/Services/ReqMgrAux/__init__.py +0 -0
- WMCore/Services/RequestDB/RequestDBReader.py +267 -0
- WMCore/Services/RequestDB/RequestDBWriter.py +39 -0
- WMCore/Services/RequestDB/__init__.py +0 -0
- WMCore/Services/Requests.py +624 -0
- WMCore/Services/Rucio/Rucio.py +1287 -0
- WMCore/Services/Rucio/RucioUtils.py +74 -0
- WMCore/Services/Rucio/__init__.py +0 -0
- WMCore/Services/RucioConMon/RucioConMon.py +128 -0
- WMCore/Services/RucioConMon/__init__.py +0 -0
- WMCore/Services/Service.py +400 -0
- WMCore/Services/StompAMQ/__init__.py +0 -0
- WMCore/Services/TagCollector/TagCollector.py +155 -0
- WMCore/Services/TagCollector/XMLUtils.py +98 -0
- WMCore/Services/TagCollector/__init__.py +0 -0
- WMCore/Services/UUIDLib.py +13 -0
- WMCore/Services/UserFileCache/UserFileCache.py +160 -0
- WMCore/Services/UserFileCache/__init__.py +8 -0
- WMCore/Services/WMAgent/WMAgent.py +63 -0
- WMCore/Services/WMAgent/__init__.py +0 -0
- WMCore/Services/WMArchive/CMSSWMetrics.py +526 -0
- WMCore/Services/WMArchive/DataMap.py +463 -0
- WMCore/Services/WMArchive/WMArchive.py +33 -0
- WMCore/Services/WMArchive/__init__.py +0 -0
- WMCore/Services/WMBS/WMBS.py +97 -0
- WMCore/Services/WMBS/__init__.py +0 -0
- WMCore/Services/WMStats/DataStruct/RequestInfoCollection.py +300 -0
- WMCore/Services/WMStats/DataStruct/__init__.py +0 -0
- WMCore/Services/WMStats/WMStatsPycurl.py +145 -0
- WMCore/Services/WMStats/WMStatsReader.py +445 -0
- WMCore/Services/WMStats/WMStatsWriter.py +273 -0
- WMCore/Services/WMStats/__init__.py +0 -0
- WMCore/Services/WMStatsServer/WMStatsServer.py +134 -0
- WMCore/Services/WMStatsServer/__init__.py +0 -0
- WMCore/Services/WorkQueue/WorkQueue.py +492 -0
- WMCore/Services/WorkQueue/__init__.py +0 -0
- WMCore/Services/__init__.py +8 -0
- WMCore/Services/pycurl_manager.py +574 -0
- WMCore/WMBase.py +50 -0
- WMCore/WMConnectionBase.py +164 -0
- WMCore/WMException.py +183 -0
- WMCore/WMExceptions.py +269 -0
- WMCore/WMFactory.py +76 -0
- WMCore/WMInit.py +228 -0
- WMCore/WMLogging.py +108 -0
- WMCore/WMSpec/ConfigSectionTree.py +442 -0
- WMCore/WMSpec/Persistency.py +135 -0
- WMCore/WMSpec/Steps/BuildMaster.py +87 -0
- WMCore/WMSpec/Steps/BuildTools.py +201 -0
- WMCore/WMSpec/Steps/Builder.py +97 -0
- WMCore/WMSpec/Steps/Diagnostic.py +89 -0
- WMCore/WMSpec/Steps/Emulator.py +62 -0
- WMCore/WMSpec/Steps/ExecuteMaster.py +208 -0
- WMCore/WMSpec/Steps/Executor.py +210 -0
- WMCore/WMSpec/Steps/StepFactory.py +213 -0
- WMCore/WMSpec/Steps/TaskEmulator.py +75 -0
- WMCore/WMSpec/Steps/Template.py +204 -0
- WMCore/WMSpec/Steps/Templates/AlcaHarvest.py +76 -0
- WMCore/WMSpec/Steps/Templates/CMSSW.py +613 -0
- WMCore/WMSpec/Steps/Templates/DQMUpload.py +59 -0
- WMCore/WMSpec/Steps/Templates/DeleteFiles.py +70 -0
- WMCore/WMSpec/Steps/Templates/LogArchive.py +84 -0
- WMCore/WMSpec/Steps/Templates/LogCollect.py +105 -0
- WMCore/WMSpec/Steps/Templates/StageOut.py +105 -0
- WMCore/WMSpec/Steps/Templates/__init__.py +10 -0
- WMCore/WMSpec/Steps/WMExecutionFailure.py +21 -0
- WMCore/WMSpec/Steps/__init__.py +8 -0
- WMCore/WMSpec/Utilities.py +63 -0
- WMCore/WMSpec/WMSpecErrors.py +12 -0
- WMCore/WMSpec/WMStep.py +347 -0
- WMCore/WMSpec/WMTask.py +1980 -0
- WMCore/WMSpec/WMWorkload.py +2288 -0
- WMCore/WMSpec/WMWorkloadTools.py +370 -0
- WMCore/WMSpec/__init__.py +9 -0
- WMCore/WorkQueue/DataLocationMapper.py +273 -0
- WMCore/WorkQueue/DataStructs/ACDCBlock.py +47 -0
- WMCore/WorkQueue/DataStructs/Block.py +48 -0
- WMCore/WorkQueue/DataStructs/CouchWorkQueueElement.py +148 -0
- WMCore/WorkQueue/DataStructs/WorkQueueElement.py +274 -0
- WMCore/WorkQueue/DataStructs/WorkQueueElementResult.py +152 -0
- WMCore/WorkQueue/DataStructs/WorkQueueElementsSummary.py +185 -0
- WMCore/WorkQueue/DataStructs/__init__.py +0 -0
- WMCore/WorkQueue/Policy/End/EndPolicyInterface.py +44 -0
- WMCore/WorkQueue/Policy/End/SingleShot.py +22 -0
- WMCore/WorkQueue/Policy/End/__init__.py +32 -0
- WMCore/WorkQueue/Policy/PolicyInterface.py +17 -0
- WMCore/WorkQueue/Policy/Start/Block.py +258 -0
- WMCore/WorkQueue/Policy/Start/Dataset.py +180 -0
- WMCore/WorkQueue/Policy/Start/MonteCarlo.py +131 -0
- WMCore/WorkQueue/Policy/Start/ResubmitBlock.py +171 -0
- WMCore/WorkQueue/Policy/Start/StartPolicyInterface.py +316 -0
- WMCore/WorkQueue/Policy/Start/__init__.py +34 -0
- WMCore/WorkQueue/Policy/__init__.py +57 -0
- WMCore/WorkQueue/WMBSHelper.py +772 -0
- WMCore/WorkQueue/WorkQueue.py +1237 -0
- WMCore/WorkQueue/WorkQueueBackend.py +750 -0
- WMCore/WorkQueue/WorkQueueBase.py +39 -0
- WMCore/WorkQueue/WorkQueueExceptions.py +44 -0
- WMCore/WorkQueue/WorkQueueReqMgrInterface.py +278 -0
- WMCore/WorkQueue/WorkQueueUtils.py +130 -0
- WMCore/WorkQueue/__init__.py +13 -0
- WMCore/Wrappers/JsonWrapper/JSONThunker.py +342 -0
- WMCore/Wrappers/JsonWrapper/__init__.py +7 -0
- WMCore/Wrappers/__init__.py +6 -0
- WMCore/__init__.py +10 -0
- wmglobalqueue-2.3.10.data/data/bin/wmc-dist-patch +15 -0
- wmglobalqueue-2.3.10.data/data/bin/wmc-dist-unpatch +8 -0
- wmglobalqueue-2.3.10.data/data/bin/wmc-httpd +3 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/.couchapprc +1 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/README.md +40 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/_attachments/index.html +264 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/_attachments/js/ElementInfoByWorkflow.js +96 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/_attachments/js/StuckElementInfo.js +57 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/_attachments/js/WorkloadInfoTable.js +80 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/_attachments/js/dataTable.js +70 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/_attachments/js/namespace.js +23 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/_attachments/style/main.css +75 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/couchapp.json +4 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/filters/childQueueFilter.js +13 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/filters/filterDeletedDocs.js +3 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/filters/queueFilter.js +11 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/language +1 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/lib/mustache.js +333 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/lib/validate.js +27 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/lib/workqueue_utils.js +61 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/lists/elementsDetail.js +28 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/lists/filter.js +86 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/lists/stuckElements.js +38 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/lists/workRestrictions.js +153 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/lists/workflowSummary.js +28 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/rewrites.json +73 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/shows/redirect.js +23 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/shows/status.js +40 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/templates/ElementSummaryByWorkflow.html +27 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/templates/StuckElementSummary.html +26 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/templates/TaskStatus.html +23 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/templates/WorkflowSummary.html +27 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/templates/partials/workqueue-common-lib.html +2 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/templates/partials/yui-lib-remote.html +16 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/templates/partials/yui-lib.html +18 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/updates/in-place.js +50 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/validate_doc_update.js +8 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/vendor/couchapp/_attachments/jquery.couch.app.js +235 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/vendor/couchapp/_attachments/jquery.pathbinder.js +173 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/activeData/map.js +8 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/activeData/reduce.js +2 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/activeParentData/map.js +8 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/activeParentData/reduce.js +2 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/activePileupData/map.js +8 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/activePileupData/reduce.js +2 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/analyticsData/map.js +11 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/analyticsData/reduce.js +1 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/availableByPriority/map.js +6 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/conflicts/map.js +5 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elements/map.js +5 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsByData/map.js +8 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsByParent/map.js +8 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsByParentData/map.js +8 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsByPileupData/map.js +8 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsByStatus/map.js +8 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsBySubscription/map.js +6 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsByWorkflow/map.js +8 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsByWorkflow/reduce.js +3 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/elementsDetailByWorkflowAndStatus/map.js +26 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobInjectStatusByRequest/map.js +10 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobInjectStatusByRequest/reduce.js +1 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobStatusByRequest/map.js +6 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobStatusByRequest/reduce.js +1 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndPriority/map.js +6 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndPriority/reduce.js +1 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndStatus/map.js +6 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndStatus/reduce.js +1 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByRequest/map.js +6 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByRequest/reduce.js +1 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByStatus/map.js +6 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByStatus/reduce.js +1 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByStatusAndPriority/map.js +6 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/jobsByStatusAndPriority/reduce.js +1 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/openRequests/map.js +6 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/recent-items/map.js +5 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/siteWhitelistByRequest/map.js +6 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/siteWhitelistByRequest/reduce.js +1 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/specsByWorkflow/map.js +5 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/stuckElements/map.js +38 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/wmbsInjectStatusByRequest/map.js +12 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/wmbsInjectStatusByRequest/reduce.js +3 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/wmbsUrl/map.js +6 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/wmbsUrl/reduce.js +2 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/wmbsUrlByRequest/map.js +6 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/wmbsUrlByRequest/reduce.js +2 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/workflowSummary/map.js +9 -0
- wmglobalqueue-2.3.10.data/data/data/couchapps/WorkQueue/views/workflowSummary/reduce.js +10 -0
- wmglobalqueue-2.3.10.dist-info/LICENSE +202 -0
- wmglobalqueue-2.3.10.dist-info/METADATA +24 -0
- wmglobalqueue-2.3.10.dist-info/NOTICE +16 -0
- wmglobalqueue-2.3.10.dist-info/RECORD +345 -0
- wmglobalqueue-2.3.10.dist-info/WHEEL +5 -0
- 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
|
WMCore/GroupUser/User.py
ADDED
|
@@ -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
|