wmglobalqueue 2.3.10.3__py3-none-any.whl → 2.4.0rc1__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/ProcFS.py +112 -0
- Utils/ProcessStats.py +90 -1
- Utils/Utilities.py +10 -0
- WMCore/Services/DBS/DBSErrors.py +0 -1
- WMCore/Services/DBS/DBSUtils.py +27 -0
- WMCore/__init__.py +1 -1
- {wmglobalqueue-2.3.10.3.dist-info → wmglobalqueue-2.4.0rc1.dist-info}/METADATA +1 -1
- {wmglobalqueue-2.3.10.3.dist-info → wmglobalqueue-2.4.0rc1.dist-info}/RECORD +99 -98
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/bin/wmc-dist-patch +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/bin/wmc-dist-unpatch +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/bin/wmc-httpd +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/.couchapprc +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/README.md +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/_attachments/index.html +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/_attachments/js/ElementInfoByWorkflow.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/_attachments/js/StuckElementInfo.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/_attachments/js/WorkloadInfoTable.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/_attachments/js/dataTable.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/_attachments/js/namespace.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/_attachments/style/main.css +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/couchapp.json +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/filters/childQueueFilter.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/filters/filterDeletedDocs.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/filters/queueFilter.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/language +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/lib/mustache.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/lib/validate.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/lib/workqueue_utils.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/lists/elementsDetail.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/lists/filter.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/lists/stuckElements.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/lists/workRestrictions.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/lists/workflowSummary.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/rewrites.json +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/shows/redirect.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/shows/status.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/templates/ElementSummaryByWorkflow.html +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/templates/StuckElementSummary.html +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/templates/TaskStatus.html +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/templates/WorkflowSummary.html +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/templates/partials/workqueue-common-lib.html +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/templates/partials/yui-lib-remote.html +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/templates/partials/yui-lib.html +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/updates/in-place.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/validate_doc_update.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/vendor/couchapp/_attachments/jquery.couch.app.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/vendor/couchapp/_attachments/jquery.pathbinder.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/activeData/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/activeData/reduce.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/activeParentData/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/activeParentData/reduce.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/activePileupData/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/activePileupData/reduce.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/analyticsData/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/analyticsData/reduce.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/availableByPriority/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/conflicts/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/elements/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/elementsByData/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/elementsByParent/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/elementsByParentData/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/elementsByPileupData/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/elementsByStatus/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/elementsBySubscription/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/elementsByWorkflow/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/elementsByWorkflow/reduce.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/elementsDetailByWorkflowAndStatus/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/jobInjectStatusByRequest/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/jobInjectStatusByRequest/reduce.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/jobStatusByRequest/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/jobStatusByRequest/reduce.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndPriority/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndPriority/reduce.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndStatus/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndStatus/reduce.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/jobsByRequest/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/jobsByRequest/reduce.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/jobsByStatus/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/jobsByStatus/reduce.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/jobsByStatusAndPriority/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/jobsByStatusAndPriority/reduce.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/openRequests/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/recent-items/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/siteWhitelistByRequest/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/siteWhitelistByRequest/reduce.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/specsByWorkflow/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/stuckElements/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/wmbsInjectStatusByRequest/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/wmbsInjectStatusByRequest/reduce.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/wmbsUrl/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/wmbsUrl/reduce.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/wmbsUrlByRequest/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/wmbsUrlByRequest/reduce.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/workflowSummary/map.js +0 -0
- {wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/views/workflowSummary/reduce.js +0 -0
- {wmglobalqueue-2.3.10.3.dist-info → wmglobalqueue-2.4.0rc1.dist-info}/LICENSE +0 -0
- {wmglobalqueue-2.3.10.3.dist-info → wmglobalqueue-2.4.0rc1.dist-info}/NOTICE +0 -0
- {wmglobalqueue-2.3.10.3.dist-info → wmglobalqueue-2.4.0rc1.dist-info}/WHEEL +0 -0
- {wmglobalqueue-2.3.10.3.dist-info → wmglobalqueue-2.4.0rc1.dist-info}/top_level.txt +0 -0
Utils/ProcFS.py
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""
|
|
4
|
+
File : ProcFS.py
|
|
5
|
+
Author : Valentin Kuznetsov <vkuznet AT gmail dot com>
|
|
6
|
+
Description: This module provides function which rely on Linux proc fs
|
|
7
|
+
"""
|
|
8
|
+
# system modules
|
|
9
|
+
import os
|
|
10
|
+
|
|
11
|
+
# 3rd party modules
|
|
12
|
+
try:
|
|
13
|
+
import psutil
|
|
14
|
+
usePsutil = True
|
|
15
|
+
except ImportError:
|
|
16
|
+
usePsutil = False
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def processStatus(pid, method=None):
|
|
20
|
+
"""
|
|
21
|
+
Return status of the given process PID along with its threads using psutil.
|
|
22
|
+
:param pid: Process ID to inspect
|
|
23
|
+
:param method: define which method to use procfs or psutil
|
|
24
|
+
:return: list of dictionaries of `{process, pid, status}` data-structure
|
|
25
|
+
"""
|
|
26
|
+
if method == 'procfs' or usePsutil == False:
|
|
27
|
+
return processStatusViaProcFS(pid)
|
|
28
|
+
return processStatusViaPsutil(pid)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def processStatusViaPsutil(pid):
|
|
32
|
+
"""
|
|
33
|
+
Return status of the given process PID along with its threads using psutil.
|
|
34
|
+
:param pid: Process ID to inspect
|
|
35
|
+
:return: list of dictionaries with {process, pid, status, type}
|
|
36
|
+
"""
|
|
37
|
+
statusList = []
|
|
38
|
+
|
|
39
|
+
try:
|
|
40
|
+
proc = psutil.Process(pid)
|
|
41
|
+
processName = proc.name()
|
|
42
|
+
processStatus = proc.status()
|
|
43
|
+
statusList.append({
|
|
44
|
+
"process": processName,
|
|
45
|
+
"pid": str(pid),
|
|
46
|
+
"status": processStatus,
|
|
47
|
+
"type": "process"
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
# Iterate over threads
|
|
51
|
+
threads = proc.threads()
|
|
52
|
+
for thread in threads:
|
|
53
|
+
if str(pid) == str(thread.id):
|
|
54
|
+
continue
|
|
55
|
+
threadId = thread.id
|
|
56
|
+
# psutil doesn't provide thread name or detailed state, so we approximate
|
|
57
|
+
statusList.append({
|
|
58
|
+
"process": f"{processName}-thread",
|
|
59
|
+
"pid": str(threadId),
|
|
60
|
+
"status": "running", # threads are assumed running if present
|
|
61
|
+
"type": "thread"
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
except psutil.NoSuchProcess:
|
|
65
|
+
return [{"error": f"Process {pid} not found"}]
|
|
66
|
+
except Exception as e:
|
|
67
|
+
return [{"error": str(e)}]
|
|
68
|
+
|
|
69
|
+
return statusList
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def processStatusViaProcFS(pid):
|
|
73
|
+
"""
|
|
74
|
+
Return status of given process PID along with its threads via /proc FS look-up (available on all Linux OSes)
|
|
75
|
+
:return: list of dictionaries of `{process, pid, status}` data-structure
|
|
76
|
+
"""
|
|
77
|
+
statusList = []
|
|
78
|
+
procPath = f"/proc/{pid}"
|
|
79
|
+
|
|
80
|
+
if not os.path.exists(procPath):
|
|
81
|
+
return [{"error": f"Process {pid} not found"}]
|
|
82
|
+
|
|
83
|
+
try:
|
|
84
|
+
with open(f"{procPath}/status", encoding='utf-8') as f:
|
|
85
|
+
processName = ""
|
|
86
|
+
processState = ""
|
|
87
|
+
for line in f:
|
|
88
|
+
if line.startswith("Name:"):
|
|
89
|
+
processName = line.split(":")[1].strip()
|
|
90
|
+
elif line.startswith("State:"):
|
|
91
|
+
processState = line.split(":")[1].strip()
|
|
92
|
+
statusList.append({"process": processName, "pid": str(pid), "status": processState, "type": "process"})
|
|
93
|
+
|
|
94
|
+
taskPath = f"{procPath}/task"
|
|
95
|
+
if os.path.exists(taskPath):
|
|
96
|
+
for threadId in os.listdir(taskPath):
|
|
97
|
+
if str(threadId) == str(pid):
|
|
98
|
+
continue
|
|
99
|
+
with open(f"{taskPath}/{threadId}/status", encoding='utf-8') as f:
|
|
100
|
+
threadName = ""
|
|
101
|
+
threadState = ""
|
|
102
|
+
for line in f:
|
|
103
|
+
if line.startswith("Name:"):
|
|
104
|
+
threadName = line.split(":")[1].strip()
|
|
105
|
+
elif line.startswith("State:"):
|
|
106
|
+
threadState = line.split(":")[1].strip()
|
|
107
|
+
statusList.append({"process": threadName, "pid": threadId, "status": threadState, "type": "thread"})
|
|
108
|
+
|
|
109
|
+
except Exception as e:
|
|
110
|
+
return [{"error": str(e)}]
|
|
111
|
+
|
|
112
|
+
return statusList
|
Utils/ProcessStats.py
CHANGED
|
@@ -89,6 +89,90 @@ def threadStack():
|
|
|
89
89
|
threads.append(tdict)
|
|
90
90
|
return dict(threads=threads)
|
|
91
91
|
|
|
92
|
+
def processThreadsInfo(pid):
|
|
93
|
+
"""
|
|
94
|
+
Provides information about process and its threads using psutils
|
|
95
|
+
:param pid: process PID, string
|
|
96
|
+
:return: dictionary statistics about process and threads
|
|
97
|
+
"""
|
|
98
|
+
try:
|
|
99
|
+
process = psutil.Process(pid)
|
|
100
|
+
|
|
101
|
+
# Get overall process details
|
|
102
|
+
process_info = {
|
|
103
|
+
"process_name": process.name(),
|
|
104
|
+
"pid": process.pid,
|
|
105
|
+
"status": process.status(),
|
|
106
|
+
"ppid": process.ppid(), # Parent Process ID
|
|
107
|
+
"cmdline": process.cmdline(), # Full command-line arguments
|
|
108
|
+
"cpu_usage_percent": process.cpu_percent(interval=1.0), # CPU usage in percentage
|
|
109
|
+
"memory_usage_percent": process.memory_percent(), # RAM usage in percentage
|
|
110
|
+
"memory_rss": process.memory_info().rss, # Resident Set Size (bytes)
|
|
111
|
+
"num_open_files": len(process.open_files()), # Number of open file descriptors
|
|
112
|
+
"num_connections": len(process.connections()), # Number of active connections
|
|
113
|
+
"threads": []
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
# Iterate over threads to get per-thread details
|
|
117
|
+
for thread in process.threads():
|
|
118
|
+
if str(pid) == str(thread.id):
|
|
119
|
+
continue
|
|
120
|
+
thread_id = thread.id
|
|
121
|
+
|
|
122
|
+
thread_info = {
|
|
123
|
+
"thread_id": thread_id,
|
|
124
|
+
"user_time": thread.user_time, # CPU time spent in user mode
|
|
125
|
+
"system_time": thread.system_time, # CPU time spent in system mode
|
|
126
|
+
"cpu_usage_percent": None,
|
|
127
|
+
"memory_usage_bytes": None,
|
|
128
|
+
"num_open_files": None,
|
|
129
|
+
"num_connections": None,
|
|
130
|
+
"state": "unknown",
|
|
131
|
+
"name": "thread"
|
|
132
|
+
}
|
|
133
|
+
if str(pid) == str(thread_id):
|
|
134
|
+
thread_info['name'] = "process"
|
|
135
|
+
|
|
136
|
+
# Try getting thread status
|
|
137
|
+
try:
|
|
138
|
+
thread_status = psutil.Process(thread_id).status()
|
|
139
|
+
thread_info["state"] = thread_status
|
|
140
|
+
except psutil.NoSuchProcess:
|
|
141
|
+
thread_info["state"] = "zombie"
|
|
142
|
+
|
|
143
|
+
# Try getting per-thread CPU usage
|
|
144
|
+
try:
|
|
145
|
+
thread_info["cpu_usage_percent"] = psutil.Process(thread_id).cpu_percent(interval=1.0)
|
|
146
|
+
except Exception:
|
|
147
|
+
thread_info["cpu_usage_percent"] = "N/A"
|
|
148
|
+
|
|
149
|
+
# Try getting per-thread memory usage
|
|
150
|
+
try:
|
|
151
|
+
thread_info["memory_usage_bytes"] = psutil.Process(thread_id).memory_info().rss
|
|
152
|
+
except Exception:
|
|
153
|
+
thread_info["memory_usage_bytes"] = "N/A"
|
|
154
|
+
|
|
155
|
+
# Try getting per-thread open file descriptors
|
|
156
|
+
try:
|
|
157
|
+
thread_info["num_open_files"] = len(psutil.Process(thread_id).open_files())
|
|
158
|
+
except Exception:
|
|
159
|
+
thread_info["num_open_files"] = "N/A"
|
|
160
|
+
|
|
161
|
+
# Try getting per-thread open connections
|
|
162
|
+
try:
|
|
163
|
+
thread_info["num_connections"] = len(psutil.Process(thread_id).connections())
|
|
164
|
+
except Exception:
|
|
165
|
+
thread_info["num_connections"] = "N/A"
|
|
166
|
+
|
|
167
|
+
# Append to process_info
|
|
168
|
+
process_info["threads"].append(thread_info)
|
|
169
|
+
|
|
170
|
+
return process_info
|
|
171
|
+
except psutil.NoSuchProcess:
|
|
172
|
+
return {"error": f"No process found with PID {pid}"}
|
|
173
|
+
except Exception as e:
|
|
174
|
+
return {"error": str(e)}
|
|
175
|
+
|
|
92
176
|
def main():
|
|
93
177
|
"Main function to use this module as a stand-along script."
|
|
94
178
|
parser = argparse.ArgumentParser(prog='PROG')
|
|
@@ -97,7 +181,12 @@ def main():
|
|
|
97
181
|
|
|
98
182
|
pdict = processStatus(int(opts.pid))
|
|
99
183
|
pdict.update(threadStack())
|
|
100
|
-
print(
|
|
184
|
+
print(f"Process status for {opts.pid}")
|
|
185
|
+
print(json.dumps(pdict, indent=4))
|
|
186
|
+
|
|
187
|
+
processInfo = processThreadsInfo(int(opts.pid))
|
|
188
|
+
print(f"Process/threads status for {opts.pid}")
|
|
189
|
+
print(json.dumps(processInfo, indent=4))
|
|
101
190
|
|
|
102
191
|
if __name__ == '__main__':
|
|
103
192
|
main()
|
Utils/Utilities.py
CHANGED
|
@@ -11,6 +11,16 @@ import sys
|
|
|
11
11
|
from types import ModuleType, FunctionType
|
|
12
12
|
from gc import get_referents
|
|
13
13
|
|
|
14
|
+
import xml.etree.ElementTree as ET
|
|
15
|
+
|
|
16
|
+
def extractFromXML(xmlFile, xmlElement):
|
|
17
|
+
tree = ET.parse(xmlFile)
|
|
18
|
+
root = tree.getroot()
|
|
19
|
+
element = root.find(f".//{xmlElement}")
|
|
20
|
+
if element is not None:
|
|
21
|
+
return element.get("Value")
|
|
22
|
+
return None
|
|
23
|
+
|
|
14
24
|
def lowerCmsHeaders(headers):
|
|
15
25
|
"""
|
|
16
26
|
Lower CMS headers in provided header's dict. The WMCore Authentication
|
WMCore/Services/DBS/DBSErrors.py
CHANGED
WMCore/Services/DBS/DBSUtils.py
CHANGED
|
@@ -7,12 +7,14 @@ set of common utilities for DBS3Reader
|
|
|
7
7
|
"""
|
|
8
8
|
import json
|
|
9
9
|
import urllib
|
|
10
|
+
import logging
|
|
10
11
|
from urllib.parse import urlparse, parse_qs, quote_plus
|
|
11
12
|
from collections import defaultdict
|
|
12
13
|
|
|
13
14
|
from Utils.CertTools import cert, ckey
|
|
14
15
|
from dbs.apis.dbsClient import aggFileLumis, aggFileParents
|
|
15
16
|
from WMCore.Services.pycurl_manager import getdata as multi_getdata
|
|
17
|
+
from WMCore.Services.pycurl_manager import RequestHandler
|
|
16
18
|
from Utils.PortForward import PortForward
|
|
17
19
|
|
|
18
20
|
|
|
@@ -137,3 +139,28 @@ def urlParams(url):
|
|
|
137
139
|
if len(vals) == 1:
|
|
138
140
|
rdict[key] = vals[0]
|
|
139
141
|
return rdict
|
|
142
|
+
|
|
143
|
+
def DBSErrors(dbsUrl):
|
|
144
|
+
"""
|
|
145
|
+
Fetch and return all DBS server errors
|
|
146
|
+
:param dbsUrl: DBS url to use
|
|
147
|
+
:return: dictionary of DBS server errors and their meaning
|
|
148
|
+
"""
|
|
149
|
+
dbsErrors = {}
|
|
150
|
+
method = "GET"
|
|
151
|
+
payload = {}
|
|
152
|
+
headers = {'Content-Type': 'application/json'}
|
|
153
|
+
mgr = RequestHandler()
|
|
154
|
+
# dbs server url for error codes
|
|
155
|
+
rurl = f"{dbsUrl}/errors"
|
|
156
|
+
data = "" # initialize data variable to be used in logging.error if necessary
|
|
157
|
+
try:
|
|
158
|
+
data = mgr.getdata(rurl, payload, headers, verb=method, ckey=ckey(), cert=cert())
|
|
159
|
+
# check if we received proper data from DBS server
|
|
160
|
+
if 'code' in str(data) and 'meaning' in str(data):
|
|
161
|
+
errorCodes = json.loads(data)
|
|
162
|
+
for row in errorCodes:
|
|
163
|
+
dbsErrors[row['code']] = row['meaning']
|
|
164
|
+
except Exception as exp:
|
|
165
|
+
logging.error("Unable to query DBS url %s, error %s, data=%s", dbsUrl, str(exp), data)
|
|
166
|
+
return dbsErrors
|
WMCore/__init__.py
CHANGED
|
@@ -9,7 +9,8 @@ Utils/MemoryCache.py,sha256=jFjfzuqhbNZhsOvFthBHp82N0SBy4TQE8yAiA484UVM,4632
|
|
|
9
9
|
Utils/Patterns.py,sha256=aahsKt5sostQJMarLnjbuXrSoZ-zRbahRjDWlIPH2Nk,700
|
|
10
10
|
Utils/Pipeline.py,sha256=gDhNPmudqGGPDB8H6s1rscHHOPjWh2sa6BTmyUdKb6E,4697
|
|
11
11
|
Utils/PortForward.py,sha256=gA0pAMSzUnwCb_bdXBveahUEASMYHhsRq5UPYorbSqY,3891
|
|
12
|
-
Utils/
|
|
12
|
+
Utils/ProcFS.py,sha256=7y2nV3EiRv1O7cgV7lN3jpevQQJU06y0Q8HRxUGj96k,3757
|
|
13
|
+
Utils/ProcessStats.py,sha256=bjMM0BHscKVKjyyD3IaaboqlInujWoT_TLH_6VSPoCk,6997
|
|
13
14
|
Utils/PythonVersion.py,sha256=R4gCXNcRvum4HBPcEtDrFsJYBKPMcgvCmITwuUuzNPc,481
|
|
14
15
|
Utils/Signals.py,sha256=ed126hvI9-rDU1y5gCr8bDWEXt5P-taOKB0wn0260Bk,1253
|
|
15
16
|
Utils/TemporaryEnvironment.py,sha256=Vk-46DqKoaZH53a6cD6bCijWqjqx44fddV7CrJQgMnQ,536
|
|
@@ -19,7 +20,7 @@ Utils/Timestamps.py,sha256=QTGLN2mKxEWwSqVXdL6ET7DE7Wh6SY9MZnOVpt3fdfE,2638
|
|
|
19
20
|
Utils/TokenManager.py,sha256=v-UyeRNQdat830vUtxQZf-6jgKj-WjHF_XJRtQwUAVk,4330
|
|
20
21
|
Utils/Tracing.py,sha256=W7AVwcF3YCcxEguu-DC_hzmB-2viRCQjQvrcPCvKq-I,1560
|
|
21
22
|
Utils/TwPrint.py,sha256=Imlk1Os_ZIFzvo1T-2xgGhyQMwC5dLXPolKXiKRq_FQ,3548
|
|
22
|
-
Utils/Utilities.py,sha256=
|
|
23
|
+
Utils/Utilities.py,sha256=rRxIogVRrUzwZXchjz67R19Vmc8enrnv7oZbIoMky6E,10652
|
|
23
24
|
Utils/__init__.py,sha256=rnPkMBa64JB9itiwLoZ_PvTbXb3zayA5NMSi90ycf5A,192
|
|
24
25
|
WMCore/Configuration.py,sha256=y2JZb7h-lstP1AB41A6UomIMOIXbGelLGBf3IPzS8Qk,19948
|
|
25
26
|
WMCore/DAOFactory.py,sha256=rR01Aoyy-FmYhO7Ziw_tS_wcYHX_V61pFfrMTBwG4hU,1707
|
|
@@ -31,7 +32,7 @@ WMCore/WMExceptions.py,sha256=1ReKj5kBoXXeOJzPa1CV7i2577rMVoASO5MhR2a9vfc,18794
|
|
|
31
32
|
WMCore/WMFactory.py,sha256=igQIcDwaDimxbo_kfyF01E8AU9dmCICU_rKsWiE-Wbs,2852
|
|
32
33
|
WMCore/WMInit.py,sha256=lXL1fgsZ9eHuY8YCz5qlkpyF2gYQOpmcJTKzvcBwwkY,7769
|
|
33
34
|
WMCore/WMLogging.py,sha256=A09mM-21DrAjuVgx7cUmFXa8nr9r_RElxEW3ZR-Rpek,3694
|
|
34
|
-
WMCore/__init__.py,sha256=
|
|
35
|
+
WMCore/__init__.py,sha256=hOUn_IrHwlfpHg5g0nGT6WZlDtNmWZlWOiKZUrpSOnY,128
|
|
35
36
|
WMCore/ACDC/Collection.py,sha256=oQziWoM8zH-Wt6H6Lxv2h7widEefPLcEhTtJv9e_Vvg,1145
|
|
36
37
|
WMCore/ACDC/CollectionTypes.py,sha256=9CW9sO9HDd-hVMgJan6bBdF5ehAZsnpFOBlJN16EnU0,273
|
|
37
38
|
WMCore/ACDC/CouchCollection.py,sha256=ZMJ4sRavIdSJ_UO_Nsq_W4rOyBoMWeZit_ElSxAkYt4,1961
|
|
@@ -130,9 +131,9 @@ WMCore/Services/CRIC/CRIC.py,sha256=lrhCM7Vt9aSgv0lzMNGNu0cojNOppgUboBvACPuZK7g,
|
|
|
130
131
|
WMCore/Services/CRIC/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
131
132
|
WMCore/Services/DBS/DBS3Reader.py,sha256=dQbJgh0weRFSFDU5zm4tsPKgv5WrgMA5UBVuWOMN4Jc,42146
|
|
132
133
|
WMCore/Services/DBS/DBSConcurrency.py,sha256=fNJh-zMZsV7XV7hc2dO1-2Kadr3voV1ul7TgZwMDqsE,1780
|
|
133
|
-
WMCore/Services/DBS/DBSErrors.py,sha256
|
|
134
|
+
WMCore/Services/DBS/DBSErrors.py,sha256=8DBnzRPoykJzGd0zAhH3VDyZ9f9oIEhnTBPFGvZD6VQ,2713
|
|
134
135
|
WMCore/Services/DBS/DBSReader.py,sha256=JKm6bnJt4yG2nVkr60emywgHsRDojoeP0obHBFcihZc,621
|
|
135
|
-
WMCore/Services/DBS/DBSUtils.py,sha256=
|
|
136
|
+
WMCore/Services/DBS/DBSUtils.py,sha256=JiEt0sU4IUR537fPkdYk71JggfxVMucCSz8Ht_aNs38,5153
|
|
136
137
|
WMCore/Services/DBS/DBSWriterObjects.py,sha256=RP0jzw-rpMdVcuhNwAk8qG65r2TGABIKG6dAgXG0fWg,11179
|
|
137
138
|
WMCore/Services/DBS/ProdException.py,sha256=O_RZWSeIQZhSoml5m755qaEPHHE1wtHfKEYLav_-bwA,3637
|
|
138
139
|
WMCore/Services/DBS/__init__.py,sha256=vED6fyGu9YJloGSpqWKcPPHDkvzttvSO20n7kIfsbnU,93
|
|
@@ -250,96 +251,96 @@ WMCore/WorkQueue/Policy/Start/__init__.py,sha256=pco1Wy0Rak-RtHZvc6c9lxme7eHidTF
|
|
|
250
251
|
WMCore/Wrappers/__init__.py,sha256=PWffOkW1-tNdjP66oA8avZR_zsupBpkcwADgwPzs818,76
|
|
251
252
|
WMCore/Wrappers/JsonWrapper/JSONThunker.py,sha256=Zti4Zywlsg_3OtXphVy1IxqSZrKCqTuLBJ8rlntLHOU,12767
|
|
252
253
|
WMCore/Wrappers/JsonWrapper/__init__.py,sha256=lHa_NpXPjLv7AODH7rtwcGl7es-0tx95eZv6rp11df0,165
|
|
253
|
-
wmglobalqueue-2.
|
|
254
|
-
wmglobalqueue-2.
|
|
255
|
-
wmglobalqueue-2.
|
|
256
|
-
wmglobalqueue-2.
|
|
257
|
-
wmglobalqueue-2.
|
|
258
|
-
wmglobalqueue-2.
|
|
259
|
-
wmglobalqueue-2.
|
|
260
|
-
wmglobalqueue-2.
|
|
261
|
-
wmglobalqueue-2.
|
|
262
|
-
wmglobalqueue-2.
|
|
263
|
-
wmglobalqueue-2.
|
|
264
|
-
wmglobalqueue-2.
|
|
265
|
-
wmglobalqueue-2.
|
|
266
|
-
wmglobalqueue-2.
|
|
267
|
-
wmglobalqueue-2.
|
|
268
|
-
wmglobalqueue-2.
|
|
269
|
-
wmglobalqueue-2.
|
|
270
|
-
wmglobalqueue-2.
|
|
271
|
-
wmglobalqueue-2.
|
|
272
|
-
wmglobalqueue-2.
|
|
273
|
-
wmglobalqueue-2.
|
|
274
|
-
wmglobalqueue-2.
|
|
275
|
-
wmglobalqueue-2.
|
|
276
|
-
wmglobalqueue-2.
|
|
277
|
-
wmglobalqueue-2.
|
|
278
|
-
wmglobalqueue-2.
|
|
279
|
-
wmglobalqueue-2.
|
|
280
|
-
wmglobalqueue-2.
|
|
281
|
-
wmglobalqueue-2.
|
|
282
|
-
wmglobalqueue-2.
|
|
283
|
-
wmglobalqueue-2.
|
|
284
|
-
wmglobalqueue-2.
|
|
285
|
-
wmglobalqueue-2.
|
|
286
|
-
wmglobalqueue-2.
|
|
287
|
-
wmglobalqueue-2.
|
|
288
|
-
wmglobalqueue-2.
|
|
289
|
-
wmglobalqueue-2.
|
|
290
|
-
wmglobalqueue-2.
|
|
291
|
-
wmglobalqueue-2.
|
|
292
|
-
wmglobalqueue-2.
|
|
293
|
-
wmglobalqueue-2.
|
|
294
|
-
wmglobalqueue-2.
|
|
295
|
-
wmglobalqueue-2.
|
|
296
|
-
wmglobalqueue-2.
|
|
297
|
-
wmglobalqueue-2.
|
|
298
|
-
wmglobalqueue-2.
|
|
299
|
-
wmglobalqueue-2.
|
|
300
|
-
wmglobalqueue-2.
|
|
301
|
-
wmglobalqueue-2.
|
|
302
|
-
wmglobalqueue-2.
|
|
303
|
-
wmglobalqueue-2.
|
|
304
|
-
wmglobalqueue-2.
|
|
305
|
-
wmglobalqueue-2.
|
|
306
|
-
wmglobalqueue-2.
|
|
307
|
-
wmglobalqueue-2.
|
|
308
|
-
wmglobalqueue-2.
|
|
309
|
-
wmglobalqueue-2.
|
|
310
|
-
wmglobalqueue-2.
|
|
311
|
-
wmglobalqueue-2.
|
|
312
|
-
wmglobalqueue-2.
|
|
313
|
-
wmglobalqueue-2.
|
|
314
|
-
wmglobalqueue-2.
|
|
315
|
-
wmglobalqueue-2.
|
|
316
|
-
wmglobalqueue-2.
|
|
317
|
-
wmglobalqueue-2.
|
|
318
|
-
wmglobalqueue-2.
|
|
319
|
-
wmglobalqueue-2.
|
|
320
|
-
wmglobalqueue-2.
|
|
321
|
-
wmglobalqueue-2.
|
|
322
|
-
wmglobalqueue-2.
|
|
323
|
-
wmglobalqueue-2.
|
|
324
|
-
wmglobalqueue-2.
|
|
325
|
-
wmglobalqueue-2.
|
|
326
|
-
wmglobalqueue-2.
|
|
327
|
-
wmglobalqueue-2.
|
|
328
|
-
wmglobalqueue-2.
|
|
329
|
-
wmglobalqueue-2.
|
|
330
|
-
wmglobalqueue-2.
|
|
331
|
-
wmglobalqueue-2.
|
|
332
|
-
wmglobalqueue-2.
|
|
333
|
-
wmglobalqueue-2.
|
|
334
|
-
wmglobalqueue-2.
|
|
335
|
-
wmglobalqueue-2.
|
|
336
|
-
wmglobalqueue-2.
|
|
337
|
-
wmglobalqueue-2.
|
|
338
|
-
wmglobalqueue-2.
|
|
339
|
-
wmglobalqueue-2.
|
|
340
|
-
wmglobalqueue-2.
|
|
341
|
-
wmglobalqueue-2.
|
|
342
|
-
wmglobalqueue-2.
|
|
343
|
-
wmglobalqueue-2.
|
|
344
|
-
wmglobalqueue-2.
|
|
345
|
-
wmglobalqueue-2.
|
|
254
|
+
wmglobalqueue-2.4.0rc1.data/data/bin/wmc-dist-patch,sha256=N8vwiPeFe27vwoNPcr6fGAW-0aTY1FzJkztwIzHUadc,646
|
|
255
|
+
wmglobalqueue-2.4.0rc1.data/data/bin/wmc-dist-unpatch,sha256=MPHT-EYI6pRpUaZZup_UHnDsZ5duwBztK_1ZltRkv2A,409
|
|
256
|
+
wmglobalqueue-2.4.0rc1.data/data/bin/wmc-httpd,sha256=wt0jRt7KAebb1j0FJFl4zQfg1rKP1mNGj3cw_nEjIII,63
|
|
257
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/.couchapprc,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2
|
|
258
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/README.md,sha256=93xySoW6AElCga0OWj2-qzBL-6SZ9MpeIJtNEx2b4qQ,1660
|
|
259
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/couchapp.json,sha256=dTC3iksvMGNQGeX0G3pnanQodY2zteyi-UfT3mZheH4,95
|
|
260
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/language,sha256=7acXRsAcP0Zf_QK22hWmUY5vvI8G8axSW-GTvlUHBp0,10
|
|
261
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/rewrites.json,sha256=cdgUaGXe1zKW1NNwMZ6wpmbqTbQm4UzmZNI0oAbxsQM,1084
|
|
262
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/validate_doc_update.js,sha256=4nsyt92jTfAPJwXIXExjRkPL4-w6cIZgotKI-gDsSnI,218
|
|
263
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/_attachments/index.html,sha256=zULuvkxSg-Ag3rtfYqW1KkKeckiD-dxc3k5uu1ekfPM,9400
|
|
264
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/_attachments/js/ElementInfoByWorkflow.js,sha256=9f3fdF2YYgIwJlADNDW5_3f3Ghcsz9UvhWYT6mKukDs,3433
|
|
265
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/_attachments/js/StuckElementInfo.js,sha256=eU9D_4UJLkAjZ1GedgZpdcZ7AlpoDih876frocI1d8s,2060
|
|
266
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/_attachments/js/WorkloadInfoTable.js,sha256=2asIM4dWM-vLjiPoLLjob5VbQuckVUcm_M0JeWKpPhI,3010
|
|
267
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/_attachments/js/dataTable.js,sha256=WcMwNPMj7ZNjTr0TnxMujahssD29VlhiIL_qWIUILFM,1970
|
|
268
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/_attachments/js/namespace.js,sha256=DJuiPB3Fjb-hnD82RhJ9inXukBvgWyQTiZ9gQj6_I2w,574
|
|
269
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/_attachments/style/main.css,sha256=AnReXS11iik_ASebi-uJL4C8Y_TVXHYiMwm9Fdx0YCQ,886
|
|
270
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/filters/childQueueFilter.js,sha256=RVBRPuD2x6V_9p9orcdcYYhepT-ZUzlXJ07VTARmwUM,349
|
|
271
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/filters/filterDeletedDocs.js,sha256=MuY08stikN4PxLQQtnD8HBfCLtiKInBgwhfdbUiBAHg,48
|
|
272
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/filters/queueFilter.js,sha256=CU2-vwVcgfE274iIzS1cckq-A9KVbPs_O31Fdu2M6F4,402
|
|
273
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/lib/mustache.js,sha256=RRQuMFZ_kSvF87QwfS-ZZ8I_hYvdJ5ZzIg-WM-_wbVY,9247
|
|
274
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/lib/validate.js,sha256=A7eV6JJi1MIk0an-x8FdsPntSWa7dRM8FbrrmRTN36w,739
|
|
275
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/lib/workqueue_utils.js,sha256=oG2brBkNNSyFQM0Ha7LQGF7hOw33M6goMGlnA5omAgI,1768
|
|
276
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/lists/elementsDetail.js,sha256=qaCQjHiZW5BhMd5ay00J_ARGbWvHnWRLQ1ix5p3jUvc,868
|
|
277
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/lists/filter.js,sha256=0YQmq6LQV_Al-Dh6Z3LVowcLI2sZ7YJDPBNKIWyfp38,1857
|
|
278
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/lists/stuckElements.js,sha256=5WOYHnSegosoH11oQjwo7YEinZ5uJhl6y_71wbTMoFo,1316
|
|
279
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/lists/workRestrictions.js,sha256=-FoDtMhvlgd3cey_iRkFQqRVKNY1Wm2tZXuMu83c5KA,4667
|
|
280
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/lists/workflowSummary.js,sha256=AwRQzL_Dcz26zTn4v71pPAs2VBDPC1IAEU2Kk_x_kKA,845
|
|
281
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/shows/redirect.js,sha256=S8A_JvZ-IoWW3zIJSZ7bf5E-YIAArH8EyJhSzXevXew,930
|
|
282
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/shows/status.js,sha256=CqMfpYTOJrzEULISF1Pigc-gBLRKroG613jOWO1yQ94,1092
|
|
283
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/templates/ElementSummaryByWorkflow.html,sha256=leNmN9jevNNuiuQo1VHSP2mKpAthJGqPHDs2WjsESHw,563
|
|
284
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/templates/StuckElementSummary.html,sha256=K3z8lMjUz4rvIeWjfFpcIrk01XvJii7cwA8xrhaoT9c,501
|
|
285
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/templates/TaskStatus.html,sha256=r4CFXQuWFQ1cRT20BJuXsBshgvIuRYpvX_cJs2qAUJQ,579
|
|
286
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/templates/WorkflowSummary.html,sha256=C3YK7tZqCABCh3uoCL2u2yeFww2tsecUrvCmiTQuTss,552
|
|
287
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/templates/partials/workqueue-common-lib.html,sha256=fzf0lmAoIxxxX6SBkWPyfAt9_b5vrZg610xpj2rQ3RE,79
|
|
288
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/templates/partials/yui-lib-remote.html,sha256=EvF2GfbbRyli3BybEEDUaYq-4HUyGgKIO0rd7IFwUts,1403
|
|
289
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/templates/partials/yui-lib.html,sha256=0hs1eVSnqYdO5SrCEduAB7U7Mdt-Ox3R5NCu9erxG3c,1345
|
|
290
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/updates/in-place.js,sha256=7HFtVesuIgXdye-BVcNhQ1g42msqMtA9EKxohzjS4DQ,1384
|
|
291
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/vendor/couchapp/_attachments/jquery.couch.app.js,sha256=ZAa-QGSHpmq5G8q20yPuliQeuOenh42XeikXXPCdG6E,7245
|
|
292
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/vendor/couchapp/_attachments/jquery.pathbinder.js,sha256=j51uO-RelZTFaXJTRD21pK52pLgREDp2sN7WMy9U1ZM,4844
|
|
293
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/activeData/map.js,sha256=U3-gh_LcmKdn9X1otiO4w_-jfq3jQqr3Io7izEF9nEY,228
|
|
294
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/activeData/reduce.js,sha256=JO5DkSBfpqDFB9VTlx8G-fpx-6DpAGbdGqK92OWQsVo,26
|
|
295
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/activeParentData/map.js,sha256=3SAcOx-eL2Ym_fLbASnvvctg-p6JfMqaCzQpeZkkXR8,247
|
|
296
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/activeParentData/reduce.js,sha256=JO5DkSBfpqDFB9VTlx8G-fpx-6DpAGbdGqK92OWQsVo,26
|
|
297
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/activePileupData/map.js,sha256=b9UIf4jfwRCdtvfyw7HHI-l-xrEH9bPu-ALjtHEhS9Y,253
|
|
298
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/activePileupData/reduce.js,sha256=JO5DkSBfpqDFB9VTlx8G-fpx-6DpAGbdGqK92OWQsVo,26
|
|
299
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/analyticsData/map.js,sha256=GH1Xa6UtvDUY17mSWwcW8OQ_Xosb05tIHXaeGuvfheU,474
|
|
300
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/analyticsData/reduce.js,sha256=dqyUOCjOBfdm63Lh2Xvp650cvkIGSPPziiDu59SioKI,4
|
|
301
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/availableByPriority/map.js,sha256=VBTxm-gX3YENMK3DstuklVYmPwspRpTPwLZ3DKnC7A4,216
|
|
302
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/conflicts/map.js,sha256=jSa32z5mwzMPCnqzfBgeFRIZKeAA68e4GpVp80B9DhM,96
|
|
303
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/elements/map.js,sha256=JQ2NrPbLggfZZ0-BKGSJkHSPnnGSNoV7n5dwPlcm2yY,137
|
|
304
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/elementsByData/map.js,sha256=W_ccKYBsbRKCpyolivBMGRU7BUX8P-s3k4dIxVjsZkM,225
|
|
305
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/elementsByParent/map.js,sha256=Ld8-VPjbNEXcxS5jCXmkckxZBWbldqMkCFXfqgqyamk,324
|
|
306
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/elementsByParentData/map.js,sha256=Jbf6BYCtBGOReoKbXav1_KflXXBJWpXD60jYDPZy3Eo,247
|
|
307
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/elementsByPileupData/map.js,sha256=NA7awhNN7xtyBbnXEsRoHnOtAWMSeuDwnriPQaWP1h8,253
|
|
308
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/elementsByStatus/map.js,sha256=NKbL9cwKFXGx-vZC6pxJAPeAqSLH-ee8n4M3dTMx0Zk,331
|
|
309
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/elementsBySubscription/map.js,sha256=Q0GQHQnqd9OID8EHdXrRx9Wp6dSGAN7kjwa7Dtv5bo4,188
|
|
310
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/elementsByWorkflow/map.js,sha256=jfY55RFG0mTYpGd16jeJWVOKuJfunoSugFGDsbkoUXs,336
|
|
311
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/elementsByWorkflow/reduce.js,sha256=w2lUOSoqixL2YdqEjBfopKj4_4U43F6bihGIfhTF5nc,41
|
|
312
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/elementsDetailByWorkflowAndStatus/map.js,sha256=uLOvNtGXk0luasoBdTikhCZcxo4BqiAu_qH54fAkXv0,1567
|
|
313
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/jobInjectStatusByRequest/map.js,sha256=bMazqlpddwjxhwiq94KQDNy8wGQrYyKp35uzQ-ptpKY,361
|
|
314
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/jobInjectStatusByRequest/reduce.js,sha256=dqyUOCjOBfdm63Lh2Xvp650cvkIGSPPziiDu59SioKI,4
|
|
315
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/jobStatusByRequest/map.js,sha256=UkoCH1yMTI1AlEag3Ytf8uvtsjm5MUZQtnqo1VokKbs,212
|
|
316
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/jobStatusByRequest/reduce.js,sha256=nlsMb5H9WpxcnFuMmDHBEPI0r49sIZCIg-iA8d8f8UQ,6
|
|
317
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndPriority/map.js,sha256=cKCa3yJAW6TqF1Gh0mKs6KoZwl1K0yj1p6G4K0aB3Yk,192
|
|
318
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndPriority/reduce.js,sha256=PePqXHjVhLAKzRNrlPJXucgNwB3wv-EDrvUYyQMiLyI,7
|
|
319
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndStatus/map.js,sha256=X2pX7Qo_xhT7raXhJXnHwz7zgsERGBRF_14r72SCPho,190
|
|
320
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/jobsByChildQueueAndStatus/reduce.js,sha256=PePqXHjVhLAKzRNrlPJXucgNwB3wv-EDrvUYyQMiLyI,7
|
|
321
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/jobsByRequest/map.js,sha256=jMdd5Zc2U834IjQcLksI66NEB2oSGNLG0UXURbjClEE,181
|
|
322
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/jobsByRequest/reduce.js,sha256=dqyUOCjOBfdm63Lh2Xvp650cvkIGSPPziiDu59SioKI,4
|
|
323
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/jobsByStatus/map.js,sha256=8BfQqM2ap5R2MFNa02dOGrnzFAvngVR7Iu1roMg_4xA,166
|
|
324
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/jobsByStatus/reduce.js,sha256=PePqXHjVhLAKzRNrlPJXucgNwB3wv-EDrvUYyQMiLyI,7
|
|
325
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/jobsByStatusAndPriority/map.js,sha256=CTDGtmb5YDdx8NTki2e1wXbUT61tmIK48VBrkSC60Xw,185
|
|
326
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/jobsByStatusAndPriority/reduce.js,sha256=PePqXHjVhLAKzRNrlPJXucgNwB3wv-EDrvUYyQMiLyI,7
|
|
327
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/openRequests/map.js,sha256=Ck0k50t0yNwjWdxf2CTxSfiyg23r0-YOfjxXR90f0yA,201
|
|
328
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/recent-items/map.js,sha256=C1d4OesnfG0IsI3u1uWtvEIgwxE1A6RfJpNJoo7JvlE,77
|
|
329
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/siteWhitelistByRequest/map.js,sha256=_345mm2S6Fs1t9mKWFXEtwVG0ktTWeFkhl1ce8vv20M,183
|
|
330
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/siteWhitelistByRequest/reduce.js,sha256=dlvpEElTCvkm4yYUH8x-fiV5v_n-StoOZNAY76G7M0I,14
|
|
331
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/specsByWorkflow/map.js,sha256=fK2QeHHqEzGLMzMyWEsgWR5xS81TgIcFGKp1IZDVIfw,124
|
|
332
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/stuckElements/map.js,sha256=MWedtuYnJ_hjVFnbfBQOcpioSozI6jqjczildNr91x8,1047
|
|
333
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/wmbsInjectStatusByRequest/map.js,sha256=Y3hv5tHw8YsdWdesP6GF4U5pz2HlnbMWAN4mn_nAOQ0,400
|
|
334
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/wmbsInjectStatusByRequest/reduce.js,sha256=pIJku7721kQoID0yCEn71jMim7Z6_JcmiZe5vT56kT0,99
|
|
335
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/wmbsUrl/map.js,sha256=E78AdAhu240C5pKVzeDv3JQkTKEkf3dFlVO9OQvZJD0,173
|
|
336
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/wmbsUrl/reduce.js,sha256=JO5DkSBfpqDFB9VTlx8G-fpx-6DpAGbdGqK92OWQsVo,26
|
|
337
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/wmbsUrlByRequest/map.js,sha256=XZ_6nCpMtv-1_g4Vedk3Quc9q0a0J4gjsD7hrUh1Gts,195
|
|
338
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/wmbsUrlByRequest/reduce.js,sha256=JO5DkSBfpqDFB9VTlx8G-fpx-6DpAGbdGqK92OWQsVo,26
|
|
339
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/workflowSummary/map.js,sha256=hWsSnOX_XCMVwhGRrIUJu2ysxA6JyfT-U23OmNWm9sk,423
|
|
340
|
+
wmglobalqueue-2.4.0rc1.data/data/data/couchapps/WorkQueue/views/workflowSummary/reduce.js,sha256=Cn94iS8yP0ZU9ds0ZjZkgvHO0phIQqY613zqdftFZ78,378
|
|
341
|
+
wmglobalqueue-2.4.0rc1.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
342
|
+
wmglobalqueue-2.4.0rc1.dist-info/METADATA,sha256=_cu8B7XWB4L5KRKaE8d-6c0xu66dh_3qisuhN6fPw18,607
|
|
343
|
+
wmglobalqueue-2.4.0rc1.dist-info/NOTICE,sha256=Njkrylka4oiNeBPstKAKPGB4_IUKVwLZg0Hswzdyg04,633
|
|
344
|
+
wmglobalqueue-2.4.0rc1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
345
|
+
wmglobalqueue-2.4.0rc1.dist-info/top_level.txt,sha256=Z_Pf5-bMrXyc1te6Q3cG64qHX6CG0ugDIOrgmcPOAXI,13
|
|
346
|
+
wmglobalqueue-2.4.0rc1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/README.md
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
|
{wmglobalqueue-2.3.10.3.data → wmglobalqueue-2.4.0rc1.data}/data/data/couchapps/WorkQueue/language
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
|
|
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
|
|
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
|