reqmgr2ms-monitor 2.3.6rc3__tar.gz → 2.3.6rc5__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {reqmgr2ms-monitor-2.3.6rc3/src/python/reqmgr2ms_monitor.egg-info → reqmgr2ms-monitor-2.3.6rc5}/PKG-INFO +1 -1
- reqmgr2ms-monitor-2.3.6rc5/bin/wmagent-component-standalone +241 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/FileTools.py +28 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/ExecuteDAO.py +73 -38
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/__init__.py +1 -1
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5/src/python/reqmgr2ms_monitor.egg-info}/PKG-INFO +1 -1
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/reqmgr2ms_monitor.egg-info/SOURCES.txt +1 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/LICENSE +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/MANIFEST.in +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/NOTICE +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/README.md +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/HWMon/wmcore-SysStat +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/acdcserver-tools +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/ParseSpecCmsswdist.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/adjustMongoDocs.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/checkDsetFileCount.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/checkStuckLQE.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/createPileupObjects.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/drainAgent.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/fixWorkflowParentage.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/getWQStatusByWorkflow.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/injectUnified.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/mongoInit.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/parseUnifiedCampaigns.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/setrequeststatus.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/summaryWMStatsFailures.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/updatePileupObjects.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/updateTotalStats.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/workflowCompletion.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/attempt-to-patch.sh +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/buildrelease.sh +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/check-ACDC-parentage +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/check-phedex-dbs-status +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/check-request-wq-status +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/clean-oracle +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/combineMinifyWMStats.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/couch-thrash.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/couch_archiver.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/create-iam-token.sh +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/createStoreResults.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/dbsbuffer-file-fix.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/deploy-rpm-to-jenkins.sh +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/docker.sh +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/fix-dbs-parentage +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/inject-to-config-cache +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/kill-workflow-in-agent +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/kill-workflow-in-global +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/make-local-clones.sh +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/outputmodules-from-config +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/patchComponent.sh +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/paused-jobs +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/purgeDeletedCouchDoc.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/reqmgr-put-default-config +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/reqmgr-sw-update +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/vaildateCMSSWMergeVersion +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/wmagent-couchapp-init +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/wmagent-delete-couchdb-workflow +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/wmagent-mod-config +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/wmagent-resource-control +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/wmagent-unregister-wmstats +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/wmagent-upload-config +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/wmagent-workqueue +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/wmc-dist-patch +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/wmc-dist-unpatch +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/wmc-httpd +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/wmcore-db-init +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/wmcore-new-config +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/wmcore-new-flow +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/wmcoreD +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/requirements.txt +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/setup.cfg +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/setup.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/setup_build.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/setup_dependencies.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/CPMetrics.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/CertTools.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/EmailAlert.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/ExtendedUnitTestCase.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/IteratorTools.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/MathUtils.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/MemoryCache.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/Patterns.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/Pipeline.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/PortForward.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/ProcessStats.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/PythonVersion.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/Signals.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/TemporaryEnvironment.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/Throttled.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/Timers.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/Timestamps.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/TokenManager.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/Tracing.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/TwPrint.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/Utilities.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/Utils/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Algorithms/Alarm.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Algorithms/MathAlgos.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Algorithms/MiscAlgos.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Algorithms/ParseXMLFile.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Algorithms/Permissions.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Algorithms/Singleton.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Algorithms/SubprocessAlgos.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Algorithms/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Cache/GenericDataCache.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Cache/WMConfigCache.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Cache/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Configuration.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DAOFactory.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/File.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/Fileset.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/Job.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/JobGroup.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/JobPackage.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/LumiList.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/Mask.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/MathStructs/ContinuousSummaryHistogram.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/MathStructs/DiscreteSummaryHistogram.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/MathStructs/SummaryHistogram.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/MathStructs/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/Pickleable.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/Run.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/Subscription.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/WMObject.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/WorkUnit.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/Workflow.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/DataStructs/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/CMSCouch.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/ConfigDBMap.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/CouchUtils.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/DBCore.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/DBCreator.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/DBExceptionHandler.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/DBFactory.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/DBFormatter.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/Dialects.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/MongoDB.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/MySQL/Destroy.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/MySQL/ListUserContent.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/MySQL/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/MySQLCore.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/Oracle/Destroy.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/Oracle/ListUserContent.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/Oracle/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/ResultSet.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/Transaction.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/ipy_profile_couch.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/GroupUser/CouchObject.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/GroupUser/Decorators.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/GroupUser/Group.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/GroupUser/Interface.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/GroupUser/User.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/GroupUser/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Lexicon.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/CherryPyThreads/HeartbeatMonitor.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/CherryPyThreads/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/DataStructs/DefaultStructs.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/DataStructs/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/MSCore/MSAuth.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/MSCore/MSCore.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/MSCore/MSManager.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/MSCore/TaskManager.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/MSCore/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/MSMonitor/MSMonitor.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/MSMonitor/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/Service/Data.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/Service/RestApiHub.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/Service/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/Tools/Common.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/Tools/PycurlRucio.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/Tools/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/WebGui/FrontPage.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/MicroService/WebGui/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/REST/Auth.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/REST/CherryPyPeriodicTask.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/REST/Error.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/REST/Format.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/REST/HeartbeatMonitorBase.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/REST/Main.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/REST/Server.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/REST/Services.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/REST/Test.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/REST/Tools.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/REST/Validation.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/REST/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/ReqMgr/DataStructs/RequestStatus.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/ReqMgr/DataStructs/RequestType.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/ReqMgr/DataStructs/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/ReqMgr/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/AlertManager/AlertManagerAPI.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/AlertManager/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/CRIC/CRIC.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/CRIC/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/DBS/DBS3Reader.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/DBS/DBSConcurrency.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/DBS/DBSErrors.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/DBS/DBSReader.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/DBS/DBSUtils.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/DBS/DBSWriterObjects.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/DBS/ProdException.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/DBS/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/FWJRDB/FWJRDBAPI.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/FWJRDB/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/HTTPS/HTTPSAuthHandler.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/HTTPS/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/LogDB/LogDB.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/LogDB/LogDBBackend.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/LogDB/LogDBExceptions.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/LogDB/LogDBReport.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/LogDB/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/MSPileup/MSPileupUtils.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/MSPileup/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/McM/McM.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/McM/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/MonIT/Grafana.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/MonIT/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/PyCondor/PyCondorAPI.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/PyCondor/PyCondorUtils.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/PyCondor/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/ReqMgr/ReqMgr.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/ReqMgr/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/ReqMgrAux/ReqMgrAux.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/ReqMgrAux/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/RequestDB/RequestDBReader.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/RequestDB/RequestDBWriter.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/RequestDB/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/Requests.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/Rucio/Rucio.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/Rucio/RucioUtils.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/Rucio/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/RucioConMon/RucioConMon.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/RucioConMon/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/Service.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/StompAMQ/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/TagCollector/TagCollector.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/TagCollector/XMLUtils.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/TagCollector/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/UUIDLib.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/UserFileCache/UserFileCache.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/UserFileCache/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WMAgent/WMAgent.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WMAgent/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WMArchive/CMSSWMetrics.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WMArchive/DataMap.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WMArchive/WMArchive.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WMArchive/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WMBS/WMBS.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WMBS/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WMStats/DataStruct/RequestInfoCollection.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WMStats/DataStruct/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WMStats/WMStatsPycurl.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WMStats/WMStatsReader.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WMStats/WMStatsWriter.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WMStats/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WMStatsServer/WMStatsServer.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WMStatsServer/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WorkQueue/WorkQueue.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/WorkQueue/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Services/pycurl_manager.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/WMBase.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/WMConnectionBase.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/WMException.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/WMExceptions.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/WMFactory.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/WMInit.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/WMLogging.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Wrappers/JsonWrapper/JSONThunker.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Wrappers/JsonWrapper/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Wrappers/__init__.py +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/reqmgr2ms_monitor.egg-info/dependency_links.txt +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/reqmgr2ms_monitor.egg-info/requires.txt +0 -0
- {reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/reqmgr2ms_monitor.egg-info/top_level.txt +0 -0
@@ -0,0 +1,241 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
"""
|
3
|
+
wmagent-component-standalone
|
4
|
+
|
5
|
+
Utility script for running a WMAgent component standalone.
|
6
|
+
|
7
|
+
Example usage:
|
8
|
+
|
9
|
+
interactive mode:
|
10
|
+
ipython -i $WMA_DEPLOY_DIR/bin/wmagent-component-standalone -- -c $WMA_CONFIG_FILE -p JobAccountant -e $WMA_ENV_FILE
|
11
|
+
|
12
|
+
daemon mode:
|
13
|
+
wmagent-component-standalone -c $WMA_CONFIG_FILE -p JobAccountant -e $WMA_ENV_FILE
|
14
|
+
"""
|
15
|
+
|
16
|
+
import os
|
17
|
+
import sys
|
18
|
+
import logging
|
19
|
+
import importlib
|
20
|
+
import runpy
|
21
|
+
import pkgutil
|
22
|
+
import inspect
|
23
|
+
import subprocess
|
24
|
+
from pprint import pprint,pformat
|
25
|
+
from distutils.sysconfig import get_python_lib
|
26
|
+
from argparse import ArgumentParser, RawDescriptionHelpFormatter
|
27
|
+
from WMCore.Configuration import loadConfigurationFile
|
28
|
+
from WMCore.ResourceControl.ResourceControl import ResourceControl
|
29
|
+
from WMCore.Services.CRIC.CRIC import CRIC
|
30
|
+
from WMCore.WMInit import connectToDB
|
31
|
+
from Utils.FileTools import loadEnvFile
|
32
|
+
|
33
|
+
def createOptionParser():
|
34
|
+
"""
|
35
|
+
_createOptionParser_
|
36
|
+
|
37
|
+
Creates an option parser to setup the component run parameters
|
38
|
+
"""
|
39
|
+
exampleStr = """
|
40
|
+
Examples:
|
41
|
+
|
42
|
+
* interactive mode:
|
43
|
+
ipython -i $WMA_DEPLOY_DIR/bin/wmagent-component-standalone -- -c $WMA_CONFIG_FILE -p JobAccountant -e $WMA_ENV_FILE
|
44
|
+
|
45
|
+
* daemon mode:
|
46
|
+
wmagent-component-standalone -c $WMA_CONFIG_FILE -p JobAccountant -e $WMA_ENV_FILE
|
47
|
+
"""
|
48
|
+
helpStr = """
|
49
|
+
Utility script for running a WMAgent component standalone. It supports two modes:
|
50
|
+
* interactive - it loads all possible sub modules defined within the component's source area
|
51
|
+
and tries to create a proper set of object instances for each of them
|
52
|
+
in the global scope of the script, such that they could be used interactively
|
53
|
+
* daemon - it mimics the normal behavior of a regular component run in the background,
|
54
|
+
while at the same time giving the ability to overwrite some of the component's configuration parameters
|
55
|
+
e.g. loglevel or provide an alternative WMA_CONFIG_FILE and/or WMA_ENV_FILE.
|
56
|
+
"""
|
57
|
+
optParser = ArgumentParser(formatter_class=RawDescriptionHelpFormatter,
|
58
|
+
description=helpStr,
|
59
|
+
epilog=exampleStr)
|
60
|
+
optParser.add_argument("-c", "--config", dest="wmaConfigPath", help="WMAgent configuration file.",
|
61
|
+
default=os.environ.get("WMA_CONFIG_FILE", None))
|
62
|
+
optParser.add_argument("-e", "--envfile", dest="wmaEnvFilePath", help="WMAgent environment file.",
|
63
|
+
default=os.environ.get("WMA_ENV_FILE", None))
|
64
|
+
optParser.add_argument("-d", "--daemon", dest="daemon",
|
65
|
+
default=False, action="store_true",
|
66
|
+
help="The component would be run as a daemon, similar to how it is run through the standard agent manage scripts.")
|
67
|
+
optParser.add_argument("-p", "--component", dest="wmaComponentName",
|
68
|
+
default=None,
|
69
|
+
help="The component/package to be loaded.")
|
70
|
+
optParser.add_argument("-l", "--loglevel", dest="logLevel",
|
71
|
+
default='INFO',
|
72
|
+
help="The loglevel at which the component should be run,")
|
73
|
+
|
74
|
+
return optParser
|
75
|
+
|
76
|
+
|
77
|
+
def main():
|
78
|
+
"""
|
79
|
+
_main_
|
80
|
+
The main function to be used for starting the chosen component as a daemon
|
81
|
+
"""
|
82
|
+
# NOTE: There are two methods for running the wmcore daemon
|
83
|
+
# * The first method forks and assosiates a new shell to the running process
|
84
|
+
# os.system(f"wmcoreD --start --component {wmaComponentName}")
|
85
|
+
# * The second method executes the daemon in the very same interpretter:
|
86
|
+
# runpy("wmcoreD")
|
87
|
+
|
88
|
+
wmaDaemonPath = os.environ.get("WMA_DEPLOY_DIR", None) + "/bin/wmcoreD"
|
89
|
+
|
90
|
+
# Run the daemon:
|
91
|
+
logger.info("Starting the component daemon")
|
92
|
+
sys.argv = ["--", "--restart", "--component", wmaComponentName]
|
93
|
+
runpy.run_path(wmaDaemonPath)
|
94
|
+
|
95
|
+
return
|
96
|
+
|
97
|
+
if __name__ == '__main__':
|
98
|
+
optParser = createOptionParser()
|
99
|
+
(options, args) = optParser.parse_known_args()
|
100
|
+
FORMAT = "%(asctime)s:%(levelname)s:%(module)s:%(funcName)s(): %(message)s"
|
101
|
+
LOGLEVEL = logging.INFO
|
102
|
+
# add logfile handler as well:
|
103
|
+
logFilePath = os.path.join(os.getenv('WMA_INSTALL_DIR', '/tmp'), f'{options.wmaComponentName}/ComponentLogStandalone')
|
104
|
+
logFileHandler = logging.FileHandler(logFilePath)
|
105
|
+
logStdoutHandler = logging.StreamHandler(sys.stdout)
|
106
|
+
|
107
|
+
logging.basicConfig(handlers=[logStdoutHandler, logFileHandler], format=FORMAT, level=LOGLEVEL)
|
108
|
+
logger = logging.getLogger(__name__)
|
109
|
+
# logger.setLevel(LOGLEVEL)
|
110
|
+
|
111
|
+
# sourcing $WMA_ENV_FILE explicitely
|
112
|
+
if not options.wmaEnvFilePath or not os.path.exists(options.wmaEnvFilePath):
|
113
|
+
msg = "Missing WMAgent environment file! One may expect component misbehaviour!"
|
114
|
+
logger.warning(msg)
|
115
|
+
else:
|
116
|
+
msg = "Trying to source explicitely the WMAgent environment file: %s"
|
117
|
+
logger.info(msg, options.wmaEnvFilePath)
|
118
|
+
try:
|
119
|
+
loadEnvFile(options.wmaEnvFilePath)
|
120
|
+
except Exception as ex:
|
121
|
+
logger.error("Failed to load wmaEnvFile: %s", options.wmaEnvFilePath)
|
122
|
+
raise
|
123
|
+
|
124
|
+
# checking the existence of wmaConfig file
|
125
|
+
if not options.wmaConfigPath or not os.path.exists(options.wmaConfigPath):
|
126
|
+
msg = "Missing WMAgent config file! One may expect component failure"
|
127
|
+
logger.warning(msg)
|
128
|
+
else:
|
129
|
+
# resetting the configuration in the env (if the default is overwritten through args)
|
130
|
+
os.environ['WMAGENT_CONFIG'] = options.wmaConfigPath
|
131
|
+
os.environ['WMA_CONFIG_FILE'] = options.wmaConfigPath
|
132
|
+
|
133
|
+
wmaConfig = loadConfigurationFile(options.wmaConfigPath)
|
134
|
+
logger.info(f"wmaEnvFilePath: {options.wmaEnvFilePath}")
|
135
|
+
logger.info(f"wmaConfigPath: {options.wmaConfigPath}")
|
136
|
+
logger.info(f"wmaComponent: {options.wmaComponentName}")
|
137
|
+
logger.info(f"logLevel: {options.logLevel}")
|
138
|
+
logger.info(f"daemon: {options.daemon}")
|
139
|
+
|
140
|
+
connectToDB()
|
141
|
+
|
142
|
+
logger.info(f"Creating default component objects.")
|
143
|
+
resourceControl = ResourceControl(config=wmaConfig)
|
144
|
+
wmaComponentName = options.wmaComponentName
|
145
|
+
wmaComponentModule = f"WMComponent.{wmaComponentName}"
|
146
|
+
# wmaComponent = importlib.import_module(wmaComponentModule + "." + wmaComponentName)
|
147
|
+
|
148
|
+
logger.info("Importing all possible modules found for this component")
|
149
|
+
|
150
|
+
# First find all possible locations for the component source
|
151
|
+
# NOTE: We always consider PYTHONPATH first
|
152
|
+
pythonLibPaths = os.getenv('PYTHONPATH', '').split(':')
|
153
|
+
pythonLibPaths.append(get_python_lib())
|
154
|
+
# Normalize paths and remove empty ones
|
155
|
+
pythonLibPaths = [x for x in pythonLibPaths if x]
|
156
|
+
for index, libPath in enumerate(pythonLibPaths):
|
157
|
+
pythonLibPaths[index] = os.path.normpath(libPath)
|
158
|
+
|
159
|
+
wmaComponentPaths = []
|
160
|
+
for comPath in pythonLibPaths:
|
161
|
+
comPath = f"{comPath}/WMComponent/{wmaComponentName}"
|
162
|
+
comPath = os.path.normpath(comPath)
|
163
|
+
if os.path.exists(comPath):
|
164
|
+
wmaComponentPaths.append(comPath)
|
165
|
+
|
166
|
+
modules = {}
|
167
|
+
classDefs = {}
|
168
|
+
# Then try to load all possible modules and submodules under the component's source path
|
169
|
+
# for pkgSource, pkgName, _ in pkgutil.iter_modules(wmaComponentPaths):
|
170
|
+
for pkgSource, pkgName, _ in pkgutil.walk_packages(wmaComponentPaths):
|
171
|
+
fullPkgName = f"{wmaComponentModule}.{pkgName}"
|
172
|
+
if pkgName == "DefaultConfig":
|
173
|
+
continue
|
174
|
+
logger.info("Loading package: %s", fullPkgName)
|
175
|
+
modSpec = pkgSource.find_spec(fullPkgName)
|
176
|
+
module = importlib.util.module_from_spec(modSpec)
|
177
|
+
modSpec.loader.exec_module(module)
|
178
|
+
modules[pkgName] = module
|
179
|
+
|
180
|
+
# Emulating `from module import *`"
|
181
|
+
logger.info(f"Populating the namespace with all definitions from {pkgName}")
|
182
|
+
if "__all__" in module.__dict__:
|
183
|
+
names = module.__dict__["__all__"]
|
184
|
+
else:
|
185
|
+
names = [x for x in module.__dict__ if not x.startswith("_")]
|
186
|
+
globals().update({k: getattr(module, k) for k in names})
|
187
|
+
|
188
|
+
# Creating instances only for class definitions local to pkgName
|
189
|
+
|
190
|
+
# Note: The method bellow for separating local definitions from imported ones
|
191
|
+
# won't work for decorated classes, since the module name of the
|
192
|
+
# decorated class defintion is considered to be the fully qulified
|
193
|
+
# module name/path of the decorator rather than the package where the
|
194
|
+
# the class definition exists:
|
195
|
+
# e.g.:
|
196
|
+
# In [10]: modules['DataCollectAPI'].__name__
|
197
|
+
# Out[10]: 'WMComponent.AnalyticsDataCollector.DataCollectAPI'
|
198
|
+
#
|
199
|
+
# In [11]: classDefs['DataCollectAPI']['LocalCouchDBData']
|
200
|
+
# Out[11]: WMComponent.AnalyticsDataCollector.DataCollectorEmulatorSwitch.emulatorHook.<locals>.EmulatorWrapper
|
201
|
+
#
|
202
|
+
# In [12]: classDefs['DataCollectAPI']['LocalCouchDBData'].__name__
|
203
|
+
# Out[12]: 'EmulatorWrapper'
|
204
|
+
#
|
205
|
+
# In [13]: classDefs['DataCollectAPI']['LocalCouchDBData'].__module__
|
206
|
+
# Out[13]: 'WMComponent.AnalyticsDataCollector.DataCollectorEmulatorSwitch'
|
207
|
+
#
|
208
|
+
# In [14]: modules['DataCollectAPI'].__name__
|
209
|
+
# Out[14]: 'WMComponent.AnalyticsDataCollector.DataCollectAPI'
|
210
|
+
|
211
|
+
logger.info("Trying to create an instance of all class definitions inside: %s", pkgName)
|
212
|
+
classDefs[pkgName] = {}
|
213
|
+
for objName, obj in inspect.getmembers(module):
|
214
|
+
if inspect.isclass(obj) and obj.__module__ == modules[pkgName].__name__:
|
215
|
+
classDefs[pkgName][objName]=obj
|
216
|
+
|
217
|
+
for className in classDefs[pkgName]:
|
218
|
+
logger.info(f"{fullPkgName}:{className}")
|
219
|
+
try:
|
220
|
+
exec(f"{className.lower()} = {className}()")
|
221
|
+
except TypeError:
|
222
|
+
try:
|
223
|
+
exec(f"{className.lower()} = {className}(wmaConfig)")
|
224
|
+
except TypeError:
|
225
|
+
try:
|
226
|
+
exec(f"{className.lower()} = {className}(wmaConfig, logger=logger)")
|
227
|
+
except TypeError:
|
228
|
+
logger.warning(f"We did our best to create an instance of: {pkgName}. Giving up now!")
|
229
|
+
|
230
|
+
def modReload():
|
231
|
+
for module in modules:
|
232
|
+
modName = modules[module].__name__
|
233
|
+
modInst = sys.modules.get(modName)
|
234
|
+
if modInst:
|
235
|
+
logger.info(f"Reloading module:{modName}")
|
236
|
+
importlib.reload(modInst)
|
237
|
+
else:
|
238
|
+
logger.warning(f"Cannot find module: {modName} in sys.modules")
|
239
|
+
|
240
|
+
if options.daemon:
|
241
|
+
main()
|
@@ -11,6 +11,7 @@ import stat
|
|
11
11
|
import subprocess
|
12
12
|
import time
|
13
13
|
import zlib
|
14
|
+
import logging
|
14
15
|
|
15
16
|
from Utils.Utilities import decodeBytesToUnicode
|
16
17
|
|
@@ -152,3 +153,30 @@ def getFullPath(name, envPath="PATH"):
|
|
152
153
|
if os.path.exists(fullPath):
|
153
154
|
return fullPath
|
154
155
|
return None
|
156
|
+
|
157
|
+
|
158
|
+
def loadEnvFile(wmaEnvFilePath, logger=None):
|
159
|
+
"""
|
160
|
+
_loadEnvFile_
|
161
|
+
A simple function to load an additional bash env file into the current script
|
162
|
+
runtime environment
|
163
|
+
:param wmaEnvFilePath: The path to the environment file to be loaded
|
164
|
+
:return: True if the script has loaded successfully, False otherwise.
|
165
|
+
"""
|
166
|
+
if not logger:
|
167
|
+
logger = logging.getLogger()
|
168
|
+
subProc = subprocess.run(['bash', '-c', f'source {wmaEnvFilePath} && python -c "import os; print(repr(os.environ.copy()))" '],
|
169
|
+
capture_output=True, check=False)
|
170
|
+
if subProc.returncode == 0:
|
171
|
+
newEnv = eval(subProc.stdout)
|
172
|
+
os.environ.update(newEnv)
|
173
|
+
if subProc.stderr:
|
174
|
+
logger.warning("Environment file: %s loaded with errors:", wmaEnvFilePath)
|
175
|
+
logger.warning(subProc.stderr.decode())
|
176
|
+
else:
|
177
|
+
logger.info("Environment file: %s loaded successfully", wmaEnvFilePath)
|
178
|
+
return True
|
179
|
+
else:
|
180
|
+
logger.error("Failed to load environment file: %s", wmaEnvFilePath)
|
181
|
+
logger.error(subProc.stderr.decode())
|
182
|
+
return False
|
{reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/src/python/WMCore/Database/ExecuteDAO.py
RENAMED
@@ -24,16 +24,17 @@ Usage:
|
|
24
24
|
import sys
|
25
25
|
import os
|
26
26
|
import re
|
27
|
-
|
27
|
+
|
28
28
|
import threading
|
29
29
|
import logging
|
30
30
|
import argparse
|
31
|
+
import pickle
|
31
32
|
from pprint import pformat
|
32
33
|
|
33
34
|
from WMCore.DAOFactory import DAOFactory
|
34
35
|
from WMCore.WMInit import WMInit
|
35
36
|
from WMCore.Agent.Configuration import Configuration, loadConfigurationFile
|
36
|
-
|
37
|
+
from Utils.FileTools import loadEnvFile
|
37
38
|
|
38
39
|
def parseArgs():
|
39
40
|
"""
|
@@ -44,11 +45,18 @@ def parseArgs():
|
|
44
45
|
formatter_class=argparse.RawTextHelpFormatter,
|
45
46
|
description=__doc__)
|
46
47
|
|
47
|
-
parser.add_argument('-c', '--config', required=
|
48
|
+
parser.add_argument('-c', '--config', required=False,
|
49
|
+
default=os.environ.get("WMA_CONFIG_FILE", None),
|
48
50
|
help="""\
|
49
|
-
The
|
50
|
-
|
51
|
-
|
51
|
+
The WMAgent config file to be used for the this execution. Default is taken from
|
52
|
+
the current's shell environment variable $WMA_CONFIG_FILE
|
53
|
+
""")
|
54
|
+
parser.add_argument('-e', '--envFile', required=False,
|
55
|
+
default=os.environ.get("WMA_ENV_FILE", None),
|
56
|
+
help="""
|
57
|
+
The WMAgent environment file to be used for the this execution. Default is taken from
|
58
|
+
the current's shell environment variable $WMA_ENV_FILE
|
59
|
+
""")
|
52
60
|
parser.add_argument('-p', '--package', required=True,
|
53
61
|
help="""\
|
54
62
|
The package from which the DAO factory to be created for this execution, e.g. WMCore.WMBS or WMComponent.DBS3Buffer""")
|
@@ -70,25 +78,32 @@ def parseArgs():
|
|
70
78
|
parser.add_argument('sqlArgs', nargs=argparse.REMAINDER, default=(),
|
71
79
|
help="""\
|
72
80
|
-- Positional parameters to be forwarded to the DAO execute method and used as SQL arguments in the query.""")
|
81
|
+
parser.add_argument('-f', '--pklFile', default=None,
|
82
|
+
help="""\
|
83
|
+
An extra *.pkl file containing any additional python objects needed for the given dao
|
84
|
+
e.g. WMCore.WMBS.Files.AddRunLumi.
|
85
|
+
The object is always loaded under the name `pklFile`. One can access the contents of the so loaded pkl file
|
86
|
+
during the dao execution trough the -s arguent e.g.:
|
87
|
+
ExecuteDAO.py -p WMCore.WMBS -m Files.AddRunLumi -c $WMA_CONFIG_FILE -f runLumiBinds_2035-4016.pkl -s "{'file': pklFile['data']}
|
88
|
+
""")
|
89
|
+
currArgs = parser.parse_args()
|
73
90
|
|
74
|
-
|
75
|
-
|
76
|
-
return args
|
91
|
+
return currArgs
|
77
92
|
|
78
93
|
|
79
94
|
def loggerSetup(logLevel=logging.INFO):
|
80
95
|
"""
|
81
96
|
Return a logger which writes everything to stdout.
|
82
97
|
"""
|
83
|
-
|
98
|
+
currLogger = logging.getLogger()
|
84
99
|
outHandler = logging.StreamHandler(sys.stdout)
|
85
100
|
outHandler.setFormatter(logging.Formatter("%(asctime)s:%(levelname)s:%(module)s: %(message)s"))
|
86
101
|
outHandler.setLevel(logLevel)
|
87
|
-
if
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
return
|
102
|
+
if currLogger.handlers:
|
103
|
+
currLogger.handlers.clear()
|
104
|
+
currLogger.addHandler(outHandler)
|
105
|
+
currLogger.setLevel(logLevel)
|
106
|
+
return currLogger
|
92
107
|
|
93
108
|
|
94
109
|
def getBackendFromDbURL(dburl):
|
@@ -110,15 +125,12 @@ class ExecuteDAO():
|
|
110
125
|
"""
|
111
126
|
A generic class to create the DAO Factory and execute the DAO module.
|
112
127
|
"""
|
113
|
-
def __init__(self,
|
114
|
-
|
115
|
-
package=None, daoModule=None):
|
128
|
+
def __init__(self, connectUrl=None, socket=None, configFile=None,
|
129
|
+
package=None, daoModule=None, logger=None):
|
116
130
|
"""
|
117
131
|
__init__
|
118
132
|
The ExecuteDAO constructor method.
|
119
|
-
:param logger: The logger instance.
|
120
133
|
:param package: The Package from which the DAO factory to be initialised.
|
121
|
-
:param configFile: Path to WMAgent configuration file.
|
122
134
|
:param connectUrl: Database connection URL (overwrites the connectUrl param from configFile if both present)
|
123
135
|
:param socket: Database connection URL (overwrites the socket param from configFile if both present)
|
124
136
|
:param module: The DAO module to be executed.
|
@@ -215,7 +227,13 @@ class ExecuteDAO():
|
|
215
227
|
self.logger.info("DAO SQL arguments provided:\n%s, %s", pformat(sqlArgs), pformat(sqlKwArgs))
|
216
228
|
else:
|
217
229
|
results = self.dao.execute(*sqlArgs, **sqlKwArgs)
|
218
|
-
self.logger.info("DAO Results:\n%s", pformat(results if isinstance(results, dict) else list(results)))
|
230
|
+
# self.logger.info("DAO Results:\n%s", pformat(results if isinstance(results, dict) else list(results)))
|
231
|
+
if isinstance(results, dict):
|
232
|
+
self.logger.info("DAO Results:\n%s", pformat(results))
|
233
|
+
elif isinstance(results, bool):
|
234
|
+
self.logger.info("DAO Results:\n%s", results)
|
235
|
+
else:
|
236
|
+
self.logger.info("DAO Results:\n%s", list(results))
|
219
237
|
return results
|
220
238
|
|
221
239
|
def getSqlQuery(self):
|
@@ -244,21 +262,19 @@ def strToDict(dString, logger=None):
|
|
244
262
|
:param dString: The dictionary string to be parsed. Possible formats are either a string
|
245
263
|
of multiple space separated named values of the form 'name=value':
|
246
264
|
or a srting fully defining the dictionary itself.
|
247
|
-
:param logger: A logger object to be used for Error message printout
|
248
265
|
:return: The constructed dictionary
|
249
266
|
"""
|
250
|
-
|
251
|
-
|
267
|
+
if not logger:
|
268
|
+
logger = logging.getLogger()
|
269
|
+
# result = ast.literal_eval(dString)
|
270
|
+
result = eval(dString)
|
252
271
|
if not isinstance(result, dict):
|
253
272
|
logger.error("The Query named arguments need to be provided as a dictionary. WRONG option: %s", pformat(dString))
|
254
273
|
raise TypeError(pformat(dString))
|
255
274
|
return result
|
256
275
|
|
257
276
|
|
258
|
-
|
259
|
-
"""
|
260
|
-
An Utility to construct a DAO Factory and execute the DAO requested.
|
261
|
-
"""
|
277
|
+
if __name__ == '__main__':
|
262
278
|
args = parseArgs()
|
263
279
|
|
264
280
|
if args.debug:
|
@@ -266,6 +282,17 @@ def main():
|
|
266
282
|
else:
|
267
283
|
logger = loggerSetup()
|
268
284
|
|
285
|
+
# Create an instance of the *.pkl file provided with the dao call, if any.
|
286
|
+
if args.pklFile:
|
287
|
+
pklFilePath = os.path.normpath(args.pklFile)
|
288
|
+
if not os.path.exists(pklFilePath):
|
289
|
+
logger.error("Cannot find the pkl file: %s. Exit!", pklFilePath)
|
290
|
+
sys.exit(1)
|
291
|
+
with open(pklFilePath, 'rb') as fd:
|
292
|
+
pklFile = pickle.load(fd)
|
293
|
+
logger.info('PklFile: %s loaded as: `pklFile`. You can refer to its content through the -s argument.', pklFilePath)
|
294
|
+
# logger.info(pformat(pklFile))
|
295
|
+
|
269
296
|
# Remove leading double slash if present:
|
270
297
|
if args.sqlArgs and args.sqlArgs[0] == '--':
|
271
298
|
args.sqlArgs = args.sqlArgs[1:]
|
@@ -276,17 +303,25 @@ def main():
|
|
276
303
|
|
277
304
|
# Parse named arguments to a proper dictionary:
|
278
305
|
if not isinstance(args.sqlKwArgs, dict):
|
279
|
-
args.sqlKwArgs = strToDict(args.sqlKwArgs
|
306
|
+
args.sqlKwArgs = strToDict(args.sqlKwArgs)
|
280
307
|
|
281
|
-
#
|
282
|
-
if
|
308
|
+
# Trying to load WMA_ENV_FILE
|
309
|
+
if not args.envFile or not os.path.exists(args.envFile):
|
310
|
+
logger.warning("Missing WMAgent environment file! One may expect DAO misbehavior!")
|
311
|
+
else:
|
312
|
+
logger.info("Trying to source explicitely the WMAgent environment file: %s", args.envFile)
|
313
|
+
try:
|
314
|
+
loadEnvFile(args.envFile)
|
315
|
+
except Exception as ex:
|
316
|
+
logger.error("Failed to load wmaEnvFile: %s", args.envFile)
|
317
|
+
raise
|
318
|
+
|
319
|
+
if not args.config or not os.path.exists(args.config):
|
320
|
+
logger.warning("Missing WMAgent config file! One may expect DAO failure")
|
321
|
+
else:
|
322
|
+
# resetting the configuration file in the env (if the default is overwritten through args)
|
283
323
|
os.environ['WMAGENT_CONFIG'] = args.config
|
284
|
-
|
324
|
+
os.environ['WMA_CONFIG_FILE'] = args.config
|
285
325
|
|
286
|
-
daoObject = ExecuteDAO(
|
287
|
-
package=args.package, daoModule=args.module)
|
326
|
+
daoObject = ExecuteDAO(package=args.package, daoModule=args.module, configFile=args.config)
|
288
327
|
daoObject(*args.sqlArgs, dryRun=args.dryRun, daoHelp=True, **args.sqlKwArgs)
|
289
|
-
|
290
|
-
|
291
|
-
if __name__ == '__main__':
|
292
|
-
main()
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/ParseSpecCmsswdist.py
RENAMED
File without changes
|
{reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/adjustMongoDocs.py
RENAMED
File without changes
|
{reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/checkDsetFileCount.py
RENAMED
File without changes
|
{reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/checkStuckLQE.py
RENAMED
File without changes
|
{reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/createPileupObjects.py
RENAMED
File without changes
|
File without changes
|
{reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/fixWorkflowParentage.py
RENAMED
File without changes
|
{reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/getWQStatusByWorkflow.py
RENAMED
File without changes
|
{reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/injectUnified.py
RENAMED
File without changes
|
File without changes
|
{reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/parseUnifiedCampaigns.py
RENAMED
File without changes
|
{reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/setrequeststatus.py
RENAMED
File without changes
|
File without changes
|
{reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/updatePileupObjects.py
RENAMED
File without changes
|
{reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/updateTotalStats.py
RENAMED
File without changes
|
{reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/adhoc-scripts/workflowCompletion.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{reqmgr2ms-monitor-2.3.6rc3 → reqmgr2ms-monitor-2.3.6rc5}/bin/wmagent-delete-couchdb-workflow
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|