rda-python-metrics 3.0.4__tar.gz → 3.0.6__tar.gz
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.
- {rda_python_metrics-3.0.4/src/rda_python_metrics.egg-info → rda_python_metrics-3.0.6}/PKG-INFO +1 -4
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/README.md +0 -3
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/pyproject.toml +1 -4
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillosdfusage.py +2 -1
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6/src/rda_python_metrics.egg-info}/PKG-INFO +1 -4
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics.egg-info/SOURCES.txt +0 -7
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics.egg-info/entry_points.txt +0 -3
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/tests/test_metrics.py +0 -3
- rda_python_metrics-3.0.4/src/rda_python_metrics/fill_user.py +0 -216
- rda_python_metrics-3.0.4/src/rda_python_metrics/filluser.py +0 -194
- rda_python_metrics-3.0.4/src/rda_python_metrics/filluser.usg +0 -24
- rda_python_metrics-3.0.4/src/rda_python_metrics/pg_person.py +0 -73
- rda_python_metrics-3.0.4/src/rda_python_metrics/pg_username.py +0 -51
- rda_python_metrics-3.0.4/src/rda_python_metrics/pgperson.py +0 -72
- rda_python_metrics-3.0.4/src/rda_python_metrics/pgusername.py +0 -53
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/LICENSE +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/MANIFEST.in +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/setup.cfg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/PgIPInfo.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/PgView.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/__init__.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_awsusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_cdgusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_codusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_country.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_endtime.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_globususage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_ipinfo.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_oneorder.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_osdfusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_rdadb.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_tdsusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillawsusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillawsusage.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillcdgusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillcdgusage.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillcodusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillcodusage.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillcountry.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillendtime.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillgdexusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillgdexusage.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillglobususage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillglobususage.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillipinfo.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillipinfo.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/filloneorder.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/filloneorder.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillosdfusage.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillrdadb.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillrdadb.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/filltdsusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/filltdsusage.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillzenodousage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillzenodousage.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/log_arch.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/logarch.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/logarch.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/pg_ipinfo.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/pg_view.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/pgsyspath.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_allusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_awsusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_checkusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_codusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_ordusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_osdfusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_rqstusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_tdsusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_webfile.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_webusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewallusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewallusage.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewawsusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewawsusage.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewcheckusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewcheckusage.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewcodusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewcodusage.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewordusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewordusage.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewosdfusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewosdfusage.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewrqstusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewrqstusage.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewtdsusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewtdsusage.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewwebfile.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewwebfile.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewwebusage.py +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewwebusage.usg +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics.egg-info/dependency_links.txt +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics.egg-info/requires.txt +0 -0
- {rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics.egg-info/top_level.txt +0 -0
{rda_python_metrics-3.0.4/src/rda_python_metrics.egg-info → rda_python_metrics-3.0.6}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rda_python_metrics
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.6
|
|
4
4
|
Summary: RDA Python Package to gather and view data usage metrics
|
|
5
5
|
Author-email: Zaihua Ji <zji@ucar.edu>
|
|
6
6
|
Project-URL: Homepage, https://github.com/NCAR/rda-python-metrics
|
|
@@ -54,10 +54,7 @@ The package provides two categories of programs:
|
|
|
54
54
|
| `fillosdfusage` | Fill OSDF usage metrics into the database |
|
|
55
55
|
| `fillrdadb` | Fill RDA database usage metrics |
|
|
56
56
|
| `filltdsusage` | Fill TDS (THREDDS) usage metrics into the database |
|
|
57
|
-
| `filluser` | Fill user information into the database |
|
|
58
57
|
| `fillzenodousage` | Fill Zenodo usage metrics into the database |
|
|
59
|
-
| `pgperson` | Retrieve user info from the UCAR People API by field |
|
|
60
|
-
| `pgusername` | Retrieve user info from the UCAR People API by username |
|
|
61
58
|
| `viewallusage` | View combined usage statistics |
|
|
62
59
|
| `viewawsusage` | View AWS usage statistics |
|
|
63
60
|
| `viewcheckusage` | View usage check results |
|
|
@@ -29,10 +29,7 @@ The package provides two categories of programs:
|
|
|
29
29
|
| `fillosdfusage` | Fill OSDF usage metrics into the database |
|
|
30
30
|
| `fillrdadb` | Fill RDA database usage metrics |
|
|
31
31
|
| `filltdsusage` | Fill TDS (THREDDS) usage metrics into the database |
|
|
32
|
-
| `filluser` | Fill user information into the database |
|
|
33
32
|
| `fillzenodousage` | Fill Zenodo usage metrics into the database |
|
|
34
|
-
| `pgperson` | Retrieve user info from the UCAR People API by field |
|
|
35
|
-
| `pgusername` | Retrieve user info from the UCAR People API by username |
|
|
36
33
|
| `viewallusage` | View combined usage statistics |
|
|
37
34
|
| `viewawsusage` | View AWS usage statistics |
|
|
38
35
|
| `viewcheckusage` | View usage check results |
|
|
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "rda_python_metrics"
|
|
9
|
-
version = "3.0.
|
|
9
|
+
version = "3.0.6"
|
|
10
10
|
authors = [
|
|
11
11
|
{ name="Zaihua Ji", email="zji@ucar.edu" },
|
|
12
12
|
]
|
|
@@ -55,9 +55,6 @@ pythonpath = [
|
|
|
55
55
|
"fillosdfusage" = "rda_python_metrics.fillosdfusage:main"
|
|
56
56
|
"fillrdadb" = "rda_python_metrics.fillrdadb:main"
|
|
57
57
|
"filltdsusage" = "rda_python_metrics.filltdsusage:main"
|
|
58
|
-
"filluser" = "rda_python_metrics.filluser:main"
|
|
59
|
-
"pgperson" = "rda_python_metrics.pgperson:main"
|
|
60
|
-
"pgusername" = "rda_python_metrics.pgusername:main"
|
|
61
58
|
"viewallusage" = "rda_python_metrics.viewallusage:main"
|
|
62
59
|
"viewawsusage" = "rda_python_metrics.viewawsusage:main"
|
|
63
60
|
"viewcheckusage" = "rda_python_metrics.viewcheckusage:main"
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillosdfusage.py
RENAMED
|
@@ -113,7 +113,8 @@ class FillOSDFUsage(PgIPInfo, PgFile, PgSplit):
|
|
|
113
113
|
if entcnt%20000 == 0:
|
|
114
114
|
dcnt = len(records)
|
|
115
115
|
self.pglog("{}: {}/{} OSDF log entries processed/records added".format(logfile, entcnt, dcnt), self.WARNLG)
|
|
116
|
-
|
|
116
|
+
# the OSDF namespace was renamed from /ncar/rda to /ncar/gdex
|
|
117
|
+
ms = re.match(r'^\[(\S+)\] \[Objectname:\/ncar\/(?:rda|gdex)\/([a-z]\d{6})\/\S+\].* \[Site:(\S+)\].* \[Host:(\S+)\].* \[AppInfo:(\S*)\].* \[Read:(\d+)\]', line)
|
|
117
118
|
if not ms: continue
|
|
118
119
|
dt = ms.group(1)
|
|
119
120
|
dsid = ms.group(2)
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6/src/rda_python_metrics.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rda_python_metrics
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.6
|
|
4
4
|
Summary: RDA Python Package to gather and view data usage metrics
|
|
5
5
|
Author-email: Zaihua Ji <zji@ucar.edu>
|
|
6
6
|
Project-URL: Homepage, https://github.com/NCAR/rda-python-metrics
|
|
@@ -54,10 +54,7 @@ The package provides two categories of programs:
|
|
|
54
54
|
| `fillosdfusage` | Fill OSDF usage metrics into the database |
|
|
55
55
|
| `fillrdadb` | Fill RDA database usage metrics |
|
|
56
56
|
| `filltdsusage` | Fill TDS (THREDDS) usage metrics into the database |
|
|
57
|
-
| `filluser` | Fill user information into the database |
|
|
58
57
|
| `fillzenodousage` | Fill Zenodo usage metrics into the database |
|
|
59
|
-
| `pgperson` | Retrieve user info from the UCAR People API by field |
|
|
60
|
-
| `pgusername` | Retrieve user info from the UCAR People API by username |
|
|
61
58
|
| `viewallusage` | View combined usage statistics |
|
|
62
59
|
| `viewawsusage` | View AWS usage statistics |
|
|
63
60
|
| `viewcheckusage` | View usage check results |
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics.egg-info/SOURCES.txt
RENAMED
|
@@ -16,7 +16,6 @@ src/rda_python_metrics/fill_oneorder.py
|
|
|
16
16
|
src/rda_python_metrics/fill_osdfusage.py
|
|
17
17
|
src/rda_python_metrics/fill_rdadb.py
|
|
18
18
|
src/rda_python_metrics/fill_tdsusage.py
|
|
19
|
-
src/rda_python_metrics/fill_user.py
|
|
20
19
|
src/rda_python_metrics/fillawsusage.py
|
|
21
20
|
src/rda_python_metrics/fillawsusage.usg
|
|
22
21
|
src/rda_python_metrics/fillcdgusage.py
|
|
@@ -39,20 +38,14 @@ src/rda_python_metrics/fillrdadb.py
|
|
|
39
38
|
src/rda_python_metrics/fillrdadb.usg
|
|
40
39
|
src/rda_python_metrics/filltdsusage.py
|
|
41
40
|
src/rda_python_metrics/filltdsusage.usg
|
|
42
|
-
src/rda_python_metrics/filluser.py
|
|
43
|
-
src/rda_python_metrics/filluser.usg
|
|
44
41
|
src/rda_python_metrics/fillzenodousage.py
|
|
45
42
|
src/rda_python_metrics/fillzenodousage.usg
|
|
46
43
|
src/rda_python_metrics/log_arch.py
|
|
47
44
|
src/rda_python_metrics/logarch.py
|
|
48
45
|
src/rda_python_metrics/logarch.usg
|
|
49
46
|
src/rda_python_metrics/pg_ipinfo.py
|
|
50
|
-
src/rda_python_metrics/pg_person.py
|
|
51
|
-
src/rda_python_metrics/pg_username.py
|
|
52
47
|
src/rda_python_metrics/pg_view.py
|
|
53
|
-
src/rda_python_metrics/pgperson.py
|
|
54
48
|
src/rda_python_metrics/pgsyspath.py
|
|
55
|
-
src/rda_python_metrics/pgusername.py
|
|
56
49
|
src/rda_python_metrics/view_allusage.py
|
|
57
50
|
src/rda_python_metrics/view_awsusage.py
|
|
58
51
|
src/rda_python_metrics/view_checkusage.py
|
|
@@ -11,10 +11,7 @@ filloneorder = rda_python_metrics.filloneorder:main
|
|
|
11
11
|
fillosdfusage = rda_python_metrics.fillosdfusage:main
|
|
12
12
|
fillrdadb = rda_python_metrics.fillrdadb:main
|
|
13
13
|
filltdsusage = rda_python_metrics.filltdsusage:main
|
|
14
|
-
filluser = rda_python_metrics.filluser:main
|
|
15
14
|
fillzenodousage = rda_python_metrics.fillzenodousage:main
|
|
16
|
-
pgperson = rda_python_metrics.pgperson:main
|
|
17
|
-
pgusername = rda_python_metrics.pgusername:main
|
|
18
15
|
setuid_logarch = rda_python_metrics.logarch:main
|
|
19
16
|
viewallusage = rda_python_metrics.viewallusage:main
|
|
20
17
|
viewawsusage = rda_python_metrics.viewawsusage:main
|
|
@@ -15,12 +15,9 @@ def test_metrics():
|
|
|
15
15
|
import rda_python_metrics.fillosdfusage
|
|
16
16
|
import rda_python_metrics.fillrdadb
|
|
17
17
|
import rda_python_metrics.filltdsusage
|
|
18
|
-
import rda_python_metrics.filluser
|
|
19
18
|
import rda_python_metrics.logarch
|
|
20
19
|
import rda_python_metrics.PgIPInfo
|
|
21
20
|
import rda_python_metrics.pg_ipinfo
|
|
22
|
-
import rda_python_metrics.pgperson
|
|
23
|
-
import rda_python_metrics.pgusername
|
|
24
21
|
import rda_python_metrics.PgView
|
|
25
22
|
import rda_python_metrics.pg_view
|
|
26
23
|
import rda_python_metrics.viewallusage
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
#
|
|
3
|
-
###############################################################################
|
|
4
|
-
#
|
|
5
|
-
# Title : filluser
|
|
6
|
-
# Author : Zaihua Ji, zji@ucar.edu
|
|
7
|
-
# Date : 02/15/2024
|
|
8
|
-
# 2025-03-26 transferred to package rda_python_metrics from
|
|
9
|
-
# https://github.com/NCAR/rda-database.git
|
|
10
|
-
# Purpose : python functions to retrieve info from Oracle database and fill
|
|
11
|
-
# table user in PostgreSQL database.schema rdadb.dssdb.
|
|
12
|
-
#
|
|
13
|
-
# Github : https://github.com/NCAR/rda-python-metrics.git
|
|
14
|
-
#
|
|
15
|
-
###############################################################################
|
|
16
|
-
import sys
|
|
17
|
-
import re
|
|
18
|
-
import time
|
|
19
|
-
from os import path as op
|
|
20
|
-
from rda_python_common import PgLOG
|
|
21
|
-
from rda_python_common import PgUtil
|
|
22
|
-
from rda_python_common import PgDBI
|
|
23
|
-
|
|
24
|
-
TBNAME = 'dssdb.user'
|
|
25
|
-
|
|
26
|
-
#
|
|
27
|
-
# main function to run this program
|
|
28
|
-
#
|
|
29
|
-
def main():
|
|
30
|
-
|
|
31
|
-
argv = sys.argv[1:]
|
|
32
|
-
missed = False
|
|
33
|
-
userno = logname = option = None
|
|
34
|
-
|
|
35
|
-
for arg in argv:
|
|
36
|
-
if arg == "-b":
|
|
37
|
-
PgLOG.PGLOG['BCKGRND'] = 1
|
|
38
|
-
elif re.match(r'^-[inu]$', arg):
|
|
39
|
-
option = arg[1]
|
|
40
|
-
if option == 'i':
|
|
41
|
-
missed = True
|
|
42
|
-
option = None
|
|
43
|
-
elif arg[0] == '-':
|
|
44
|
-
PgLOG.pglog(arg + ": Invalid Option", PgLOG.LGWNEX)
|
|
45
|
-
elif option == "n":
|
|
46
|
-
userno = arg
|
|
47
|
-
option = None
|
|
48
|
-
elif option == "u":
|
|
49
|
-
logname = arg
|
|
50
|
-
option = None
|
|
51
|
-
else:
|
|
52
|
-
PgLOG.pglog(arg + ": Invalid Parameter", PgLOG.LGWNEX)
|
|
53
|
-
|
|
54
|
-
if not (missed or userno or logname): PgLOG.show_usage('filluser')
|
|
55
|
-
|
|
56
|
-
if not PgLOG.valid_command("pgperson"):
|
|
57
|
-
errmsg = PgLOG.PGLOG['SYSERR'] if PgLOG.PGLOG['SYSERR'] else "Cannot find command"
|
|
58
|
-
PgLOG.pglog("filluser: Cannot be executed on '{}'\n{}".format(PgLOG.PGLOG['HOSTNAME'], errmsg), PgLOG.LGWNEX)
|
|
59
|
-
|
|
60
|
-
PgDBI.dssdb_scname()
|
|
61
|
-
PgLOG.cmdlog("filluser {}".format(' '.join(argv)))
|
|
62
|
-
if missed: # checking and fill missed ones in user table
|
|
63
|
-
fill_missed_users()
|
|
64
|
-
else:
|
|
65
|
-
fill_one_user(userno, logname)
|
|
66
|
-
|
|
67
|
-
sys.exit(0)
|
|
68
|
-
|
|
69
|
-
#
|
|
70
|
-
# update users with missed info in table dssdb.user
|
|
71
|
-
#
|
|
72
|
-
def fill_missed_users():
|
|
73
|
-
|
|
74
|
-
PgLOG.pglog("Getting incomplete user info", PgLOG.LOGWRN)
|
|
75
|
-
pgusers = PgDBI.pgmget(TBNAME, "*", "stat_flag = 'M'", PgLOG.LOGWRN)
|
|
76
|
-
cntall = len(pgusers['logname']) if pgusers else 0
|
|
77
|
-
s = 's' if cntall > 1 else ''
|
|
78
|
-
PgLOG.pglog("{} record{} retrieved at {}".format(cntall, s, PgLOG.current_datetime()), PgLOG.LOGWRN)
|
|
79
|
-
if not cntall: return
|
|
80
|
-
modcnt = 0
|
|
81
|
-
for i in range(cntall):
|
|
82
|
-
pgrec = PgUtil.onerecord(pgusers, i)
|
|
83
|
-
record = PgDBI.ucar_user_info(pgrec['userno'], pgrec['logname'])
|
|
84
|
-
if record:
|
|
85
|
-
modcnt += PgDBI.pgupdt(TBNAME, record, "uid = {}".format(pgrec['uid']), PgLOG.LOGWRN)
|
|
86
|
-
|
|
87
|
-
if (i%500) == 499:
|
|
88
|
-
PgLOG.pglog("{}/{} Records modifiled/processed".format(modcnt, (i+1)), PgLOG.WARNLG)
|
|
89
|
-
s = 's' if modcnt > 1 else ''
|
|
90
|
-
PgLOG.pglog("{} User Record{} modified".format(modcnt, s), PgLOG.LOGWRN)
|
|
91
|
-
return modcnt
|
|
92
|
-
|
|
93
|
-
#
|
|
94
|
-
# Fill one user for given condition userno or logname
|
|
95
|
-
#
|
|
96
|
-
def fill_one_user(userno, logname):
|
|
97
|
-
|
|
98
|
-
if userno:
|
|
99
|
-
msg = "User ID {}: ".format(userno)
|
|
100
|
-
else:
|
|
101
|
-
msg = "User Login Name {}: ".format(logname)
|
|
102
|
-
modcnt = cntadd = 0
|
|
103
|
-
newrec = PgDBI.ucar_user_info(userno, logname)
|
|
104
|
-
if not newrec:
|
|
105
|
-
PgLOG.pglog(msg + "No User info found from People DB", PgLOG.LOGWRN)
|
|
106
|
-
return
|
|
107
|
-
|
|
108
|
-
cond = 'userno = {}'.format(userno) if userno else "logname = '{}'".format(logname)
|
|
109
|
-
pgrec = PgDBI.pgget(TBNAME, "*", cond + " AND until_date is null", PgLOG.LGWNEX)
|
|
110
|
-
record = get_user_record(newrec, pgrec, (newrec['stat_flag'] == 'A'))
|
|
111
|
-
if record == None:
|
|
112
|
-
PgLOG.pglog(msg + "User record saved already", PgLOG.LOGWRN)
|
|
113
|
-
return
|
|
114
|
-
if record:
|
|
115
|
-
if pgrec:
|
|
116
|
-
if PgDBI.pgupdt(TBNAME, record, "uid = {}".format(pgrec['uid']), PgLOG.LOGWRN):
|
|
117
|
-
PgLOG.pglog(msg + "Existing User record Modified", PgLOG.LOGWRN)
|
|
118
|
-
modcnt += 1
|
|
119
|
-
else:
|
|
120
|
-
if PgDBI.pgadd(TBNAME, record, PgLOG.LGWNEX):
|
|
121
|
-
PgLOG.pglog(msg + "New user record added", PgLOG.LOGWRN)
|
|
122
|
-
cntadd += 1
|
|
123
|
-
else:
|
|
124
|
-
record = {'stat_flag' : 'C'}
|
|
125
|
-
record['until_date'] = PgUtil.adddate(newrec['start_date'], 0, 0, -1)
|
|
126
|
-
if PgDBI.pgupdt(TBNAME, record, "uid = {}".format(pgrec['uid']), PgLOG.LOGWRN):
|
|
127
|
-
PgLOG.pglog(msg + "Existing User record Closed", PgLOG.LOGWRN)
|
|
128
|
-
modcnt += 1
|
|
129
|
-
|
|
130
|
-
record = get_user_record(newrec)
|
|
131
|
-
if record and PgDBI.pgadd(TBNAME, record, PgLOG.LGWNEX):
|
|
132
|
-
PgLOG.pglog(msg + "Additional New user record added", PgLOG.LOGWRN)
|
|
133
|
-
cntadd += 1
|
|
134
|
-
|
|
135
|
-
#
|
|
136
|
-
# local function: get_user_record(orarec: refer to oracle hush record
|
|
137
|
-
# pgrecs: refer to exist, mysql hush records)
|
|
138
|
-
|
|
139
|
-
# return: a reference to a new mysql record for update or add
|
|
140
|
-
#
|
|
141
|
-
def get_user_record(orarec, pgrec = None, neworg = False):
|
|
142
|
-
|
|
143
|
-
if not orarec['email']: return None
|
|
144
|
-
|
|
145
|
-
ms = re.match("^(.+\@).+\.ucar\.edu$", orarec['email'], re.I)
|
|
146
|
-
if ms: orarec['email'] = ms.group(1) + "ucar.edu"
|
|
147
|
-
|
|
148
|
-
newrec = {}
|
|
149
|
-
if pgrec:
|
|
150
|
-
if neworg and PgUtil.diffdate(orarec['start_date'], pgrec['start_date']) <= 0:
|
|
151
|
-
neworg = False
|
|
152
|
-
if not pgrec['division'] or pgrec['division'] != orarec['division']:
|
|
153
|
-
if neworg and orarec['org_type'] == 'NCAR': return 0
|
|
154
|
-
newrec['division'] = orarec['division']
|
|
155
|
-
if orarec['org_name'] and (not pgrec['org_name'] or pgrec['org_name'] != orarec['org_name']):
|
|
156
|
-
if neworg: return 0
|
|
157
|
-
newrec['org_name'] = orarec['org_name']
|
|
158
|
-
if orarec['country'] and (not pgrec['country'] or orarec['country'] and pgrec['country'] != orarec['country']):
|
|
159
|
-
orarec['country'] = PgDBI.set_country_code(orarec)
|
|
160
|
-
if not pgrec['country'] or pgrec['country'] != orarec['country']:
|
|
161
|
-
if neworg: return 0
|
|
162
|
-
newrec['country'] = orarec['country']
|
|
163
|
-
if not pgrec['org_type'] or (orarec['org_type'] and pgrec['org_type'] != orarec['org_type']):
|
|
164
|
-
orarec['org_type'] = PgDBI.get_org_type(orarec['org_type'], orarec['email'])
|
|
165
|
-
if not pgrec['org_type'] or pgrec['org_type'] != orarec['org_type']:
|
|
166
|
-
if neworg: return 0
|
|
167
|
-
newrec['org_type'] = orarec['org_type']
|
|
168
|
-
if not pgrec['email'] or pgrec['email'] != orarec['email']:
|
|
169
|
-
if neworg: return 0
|
|
170
|
-
newrec['email'] = orarec['email']
|
|
171
|
-
if not pgrec['ucaremail'] or pgrec['ucaremail'] != orarec['ucaremail']:
|
|
172
|
-
newrec['ucaremail'] = orarec['ucaremail']
|
|
173
|
-
if 'until_date' in orarec and PgUtil.diffdate(pgrec['until_date'], orarec['until_date']):
|
|
174
|
-
newrec['until_date'] = orarec['until_date']
|
|
175
|
-
if not pgrec['userno'] or pgrec['userno'] != orarec['userno']:
|
|
176
|
-
newrec['userno'] = orarec['userno']
|
|
177
|
-
if not pgrec['upid'] or pgrec['upid'] != orarec['upid']:
|
|
178
|
-
newrec['upid'] = orarec['upid']
|
|
179
|
-
if not pgrec['logname'] or pgrec['logname'] != orarec['logname']:
|
|
180
|
-
newrec['logname'] = orarec['logname']
|
|
181
|
-
if orarec['lstname'] and (not pgrec['lstname'] or pgrec['lstname'] != orarec['lstname']):
|
|
182
|
-
newrec['lstname'] = orarec['lstname']
|
|
183
|
-
if orarec['fstname'] and (not pgrec['fstname'] or pgrec['fstname'] != orarec['fstname']):
|
|
184
|
-
newrec['fstname'] = orarec['fstname']
|
|
185
|
-
if pgrec['stat_flag'] != orarec['stat_flag']:
|
|
186
|
-
newrec['stat_flag'] = orarec['stat_flag']
|
|
187
|
-
if 'phoneno' in orarec and orarec['phoneno'] and (not pgrec['phoneno'] or pgrec['phoneno'] != orarec['phoneno']):
|
|
188
|
-
newrec['phoneno'] = orarec['phoneno']
|
|
189
|
-
if 'faxno' in orarec and orarec['faxno'] and (not pgrec['faxno'] or pgrec['faxno'] != orarec['faxno']):
|
|
190
|
-
newrec['faxno'] = orarec['faxno']
|
|
191
|
-
if orarec['start_date'] and (not pgrec['start_date'] or PgUtil.diffdate(pgrec['start_date'], orarec['start_date']) > 0):
|
|
192
|
-
newrec['start_date'] = orarec['start_date']
|
|
193
|
-
elif orarec['stat_flag'] == 'A':
|
|
194
|
-
newrec['upid'] = orarec['upid']
|
|
195
|
-
newrec['userno'] = orarec['userno']
|
|
196
|
-
newrec['logname'] = orarec['logname']
|
|
197
|
-
newrec['lstname'] = orarec['lstname']
|
|
198
|
-
newrec['fstname'] = orarec['fstname']
|
|
199
|
-
newrec['stat_flag'] = orarec['stat_flag']
|
|
200
|
-
if orarec['start_date']: newrec['start_date'] = orarec['start_date']
|
|
201
|
-
if 'until_date' in orarec: newrec['until_date'] = orarec['until_date']
|
|
202
|
-
newrec['division'] = orarec['division']
|
|
203
|
-
newrec['org_name'] = orarec['org_name']
|
|
204
|
-
newrec['org_type'] = PgDBI.get_org_type(orarec['org_type'], orarec['email'])
|
|
205
|
-
newrec['country'] = PgDBI.set_country_code(orarec['email'], orarec['country'])
|
|
206
|
-
newrec['email'] = orarec['email']
|
|
207
|
-
newrec['ucaremail'] = orarec['ucaremail']
|
|
208
|
-
if 'phoneno' in orarec: newrec['phoneno'] = orarec['phoneno']
|
|
209
|
-
if 'faxno' in orarec: newrec['faxno'] = orarec['faxno']
|
|
210
|
-
|
|
211
|
-
return newrec if newrec else None
|
|
212
|
-
|
|
213
|
-
#
|
|
214
|
-
# call main() to start program
|
|
215
|
-
#
|
|
216
|
-
if __name__ == "__main__": main()
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
###############################################################################
|
|
3
|
-
# Title : filluser
|
|
4
|
-
# Author : Zaihua Ji, zji@ucar.edu
|
|
5
|
-
# Date : 02/15/2024
|
|
6
|
-
# 2025-03-26 transferred to package rda_python_metrics from
|
|
7
|
-
# https://github.com/NCAR/rda-database.git
|
|
8
|
-
# Purpose : python functions to retrieve info from Oracle database and fill
|
|
9
|
-
# table user in PostgreSQL database.schema rdadb.dssdb.
|
|
10
|
-
# Github : https://github.com/NCAR/rda-python-metrics.git
|
|
11
|
-
###############################################################################
|
|
12
|
-
import sys
|
|
13
|
-
import re
|
|
14
|
-
from rda_python_common.pg_util import PgUtil
|
|
15
|
-
from rda_python_common.pg_dbi import PgDBI
|
|
16
|
-
|
|
17
|
-
class FillUser(PgUtil, PgDBI):
|
|
18
|
-
|
|
19
|
-
"""Retrieve user info from the UCAR People API and fill table user in PostgreSQL database rdadb."""
|
|
20
|
-
|
|
21
|
-
def __init__(self):
|
|
22
|
-
super().__init__()
|
|
23
|
-
self.TBNAME = 'dssdb.user'
|
|
24
|
-
self.userno = self.logname = None
|
|
25
|
-
self.missed = False
|
|
26
|
-
|
|
27
|
-
def read_parameters(self):
|
|
28
|
-
"""Function to read parameters."""
|
|
29
|
-
argv = sys.argv[1:]
|
|
30
|
-
option = None
|
|
31
|
-
for arg in argv:
|
|
32
|
-
if arg == "-b":
|
|
33
|
-
self.PGLOG['BCKGRND'] = 1
|
|
34
|
-
elif re.match(r'^-[inu]$', arg):
|
|
35
|
-
option = arg[1]
|
|
36
|
-
if option == 'i':
|
|
37
|
-
self.missed = True
|
|
38
|
-
option = None
|
|
39
|
-
elif arg[0] == '-':
|
|
40
|
-
self.pglog(arg + ": Invalid Option", self.LGWNEX)
|
|
41
|
-
elif option == "n":
|
|
42
|
-
self.userno = arg
|
|
43
|
-
option = None
|
|
44
|
-
elif option == "u":
|
|
45
|
-
self.logname = arg
|
|
46
|
-
option = None
|
|
47
|
-
else:
|
|
48
|
-
self.pglog(arg + ": Invalid Parameter", self.LGWNEX)
|
|
49
|
-
if not (self.missed or self.userno or self.logname): self.show_usage('filluser')
|
|
50
|
-
if not self.valid_command("pgperson"):
|
|
51
|
-
errmsg = self.PGLOG['SYSERR'] if self.PGLOG['SYSERR'] else "Cannot find command"
|
|
52
|
-
self.pglog("filluser: Cannot be executed on '{}'\n{}".format(self.PGLOG['HOSTNAME'], errmsg), self.LGWNEX)
|
|
53
|
-
self.cmdlog("filluser {}".format(' '.join(argv)))
|
|
54
|
-
|
|
55
|
-
def start_actions(self):
|
|
56
|
-
"""Function to start actions."""
|
|
57
|
-
self.dssdb_scname()
|
|
58
|
-
if self.missed: # checking and fill missed ones in user table
|
|
59
|
-
self.fill_missed_users()
|
|
60
|
-
else:
|
|
61
|
-
self.fill_one_user()
|
|
62
|
-
|
|
63
|
-
def fill_missed_users(self):
|
|
64
|
-
"""Update users with missed info in table dssdb.user."""
|
|
65
|
-
self.pglog("Getting incomplete user info", self.LOGWRN)
|
|
66
|
-
pgusers = self.pgmget(self.TBNAME, "*", "stat_flag = 'M'", self.LOGWRN)
|
|
67
|
-
cntall = len(pgusers['logname']) if pgusers else 0
|
|
68
|
-
s = 's' if cntall > 1 else ''
|
|
69
|
-
self.pglog("{} record{} retrieved at {}".format(cntall, s, self.current_datetime()), self.LOGWRN)
|
|
70
|
-
if not cntall: return
|
|
71
|
-
modcnt = 0
|
|
72
|
-
for i in range(cntall):
|
|
73
|
-
pgrec = self.onerecord(pgusers, i)
|
|
74
|
-
record = self.ucar_user_info(pgrec['userno'], pgrec['logname'])
|
|
75
|
-
if record:
|
|
76
|
-
modcnt += self.pgupdt(self.TBNAME, record, "uid = {}".format(pgrec['uid']), self.LOGWRN)
|
|
77
|
-
if (i%500) == 499:
|
|
78
|
-
self.pglog("{}/{} Records modifiled/processed".format(modcnt, (i+1)), self.WARNLG)
|
|
79
|
-
s = 's' if modcnt > 1 else ''
|
|
80
|
-
self.pglog("{} User Record{} modified".format(modcnt, s), self.LOGWRN)
|
|
81
|
-
return modcnt
|
|
82
|
-
|
|
83
|
-
def fill_one_user(self):
|
|
84
|
-
"""Fill one user for given condition userno or logname."""
|
|
85
|
-
if self.userno:
|
|
86
|
-
msg = "User ID {}: ".format(self.userno)
|
|
87
|
-
else:
|
|
88
|
-
msg = "User Login Name {}: ".format(self.logname)
|
|
89
|
-
newrec = self.ucar_user_info(self.userno, self.logname)
|
|
90
|
-
if not newrec:
|
|
91
|
-
self.pglog(msg + "No User info found from People DB", self.LOGWRN)
|
|
92
|
-
return
|
|
93
|
-
cond = 'userno = {}'.format(self.userno) if self.userno else "logname = '{}'".format(self.logname)
|
|
94
|
-
pgrec = self.pgget(self.TBNAME, "*", cond + " AND until_date is null", self.LGWNEX)
|
|
95
|
-
record = self.get_user_record(newrec, pgrec, (newrec['stat_flag'] == 'A'))
|
|
96
|
-
if record == None:
|
|
97
|
-
self.pglog(msg + "User record saved already", self.LOGWRN)
|
|
98
|
-
return
|
|
99
|
-
if record:
|
|
100
|
-
if pgrec:
|
|
101
|
-
if self.pgupdt(self.TBNAME, record, "uid = {}".format(pgrec['uid']), self.LOGWRN):
|
|
102
|
-
self.pglog(msg + "Existing User record Modified", self.LOGWRN)
|
|
103
|
-
else:
|
|
104
|
-
if self.pgadd(self.TBNAME, record, self.LGWNEX):
|
|
105
|
-
self.pglog(msg + "New user record added", self.LOGWRN)
|
|
106
|
-
else:
|
|
107
|
-
record = {'stat_flag' : 'C'}
|
|
108
|
-
record['until_date'] = self.adddate(newrec['start_date'], 0, 0, -1)
|
|
109
|
-
if self.pgupdt(self.TBNAME, record, "uid = {}".format(pgrec['uid']), self.LOGWRN):
|
|
110
|
-
self.pglog(msg + "Existing User record Closed", self.LOGWRN)
|
|
111
|
-
record = self.get_user_record(newrec)
|
|
112
|
-
if record and self.pgadd(self.TBNAME, record, self.LGWNEX):
|
|
113
|
-
self.pglog(msg + "Additional New user record added", self.LOGWRN)
|
|
114
|
-
|
|
115
|
-
# local function: get_user_record(orarec: refer to oracle hush record
|
|
116
|
-
# pgrecs: refer to exist, mysql hush records)
|
|
117
|
-
def get_user_record(self, orarec, pgrec = None, neworg = False):
|
|
118
|
-
""" return: a reference to a new mysql record for update or add."""
|
|
119
|
-
if not orarec['email']: return None
|
|
120
|
-
ms = re.match(r"^(.+@).+\.ucar\.edu$", orarec['email'], re.I)
|
|
121
|
-
if ms: orarec['email'] = ms.group(1) + "ucar.edu"
|
|
122
|
-
newrec = {}
|
|
123
|
-
if pgrec:
|
|
124
|
-
if neworg and self.diffdate(orarec['start_date'], pgrec['start_date']) <= 0:
|
|
125
|
-
neworg = False
|
|
126
|
-
if not pgrec['division'] or pgrec['division'] != orarec['division']:
|
|
127
|
-
if neworg and orarec['org_type'] == 'NCAR': return 0
|
|
128
|
-
newrec['division'] = orarec['division']
|
|
129
|
-
if orarec['org_name'] and (not pgrec['org_name'] or pgrec['org_name'] != orarec['org_name']):
|
|
130
|
-
if neworg: return 0
|
|
131
|
-
newrec['org_name'] = orarec['org_name']
|
|
132
|
-
if orarec['country'] and (not pgrec['country'] or orarec['country'] and pgrec['country'] != orarec['country']):
|
|
133
|
-
orarec['country'] = self.set_country_code(orarec['email'], orarec['country'])
|
|
134
|
-
if not pgrec['country'] or pgrec['country'] != orarec['country']:
|
|
135
|
-
if neworg: return 0
|
|
136
|
-
newrec['country'] = orarec['country']
|
|
137
|
-
if not pgrec['org_type'] or (orarec['org_type'] and pgrec['org_type'] != orarec['org_type']):
|
|
138
|
-
orarec['org_type'] = self.get_org_type(orarec['org_type'], orarec['email'])
|
|
139
|
-
if not pgrec['org_type'] or pgrec['org_type'] != orarec['org_type']:
|
|
140
|
-
if neworg: return 0
|
|
141
|
-
newrec['org_type'] = orarec['org_type']
|
|
142
|
-
if not pgrec['email'] or pgrec['email'] != orarec['email']:
|
|
143
|
-
if neworg: return 0
|
|
144
|
-
newrec['email'] = orarec['email']
|
|
145
|
-
if not pgrec['ucaremail'] or pgrec['ucaremail'] != orarec['ucaremail']:
|
|
146
|
-
newrec['ucaremail'] = orarec['ucaremail']
|
|
147
|
-
if 'until_date' in orarec and self.diffdate(pgrec['until_date'], orarec['until_date']):
|
|
148
|
-
newrec['until_date'] = orarec['until_date']
|
|
149
|
-
if not pgrec['userno'] or pgrec['userno'] != orarec['userno']:
|
|
150
|
-
newrec['userno'] = orarec['userno']
|
|
151
|
-
if not pgrec['upid'] or pgrec['upid'] != orarec['upid']:
|
|
152
|
-
newrec['upid'] = orarec['upid']
|
|
153
|
-
if not pgrec['logname'] or pgrec['logname'] != orarec['logname']:
|
|
154
|
-
newrec['logname'] = orarec['logname']
|
|
155
|
-
if orarec['lstname'] and (not pgrec['lstname'] or pgrec['lstname'] != orarec['lstname']):
|
|
156
|
-
newrec['lstname'] = orarec['lstname']
|
|
157
|
-
if orarec['fstname'] and (not pgrec['fstname'] or pgrec['fstname'] != orarec['fstname']):
|
|
158
|
-
newrec['fstname'] = orarec['fstname']
|
|
159
|
-
if pgrec['stat_flag'] != orarec['stat_flag']:
|
|
160
|
-
newrec['stat_flag'] = orarec['stat_flag']
|
|
161
|
-
if 'phoneno' in orarec and orarec['phoneno'] and (not pgrec['phoneno'] or pgrec['phoneno'] != orarec['phoneno']):
|
|
162
|
-
newrec['phoneno'] = orarec['phoneno']
|
|
163
|
-
if 'faxno' in orarec and orarec['faxno'] and (not pgrec['faxno'] or pgrec['faxno'] != orarec['faxno']):
|
|
164
|
-
newrec['faxno'] = orarec['faxno']
|
|
165
|
-
if orarec['start_date'] and (not pgrec['start_date'] or self.diffdate(pgrec['start_date'], orarec['start_date']) > 0):
|
|
166
|
-
newrec['start_date'] = orarec['start_date']
|
|
167
|
-
elif orarec['stat_flag'] == 'A':
|
|
168
|
-
newrec['upid'] = orarec['upid']
|
|
169
|
-
newrec['userno'] = orarec['userno']
|
|
170
|
-
newrec['logname'] = orarec['logname']
|
|
171
|
-
newrec['lstname'] = orarec['lstname']
|
|
172
|
-
newrec['fstname'] = orarec['fstname']
|
|
173
|
-
newrec['stat_flag'] = orarec['stat_flag']
|
|
174
|
-
if orarec['start_date']: newrec['start_date'] = orarec['start_date']
|
|
175
|
-
if 'until_date' in orarec: newrec['until_date'] = orarec['until_date']
|
|
176
|
-
newrec['division'] = orarec['division']
|
|
177
|
-
newrec['org_name'] = orarec['org_name']
|
|
178
|
-
newrec['org_type'] = self.get_org_type(orarec['org_type'], orarec['email'])
|
|
179
|
-
newrec['country'] = self.set_country_code(orarec['email'], orarec['country'])
|
|
180
|
-
newrec['email'] = orarec['email']
|
|
181
|
-
newrec['ucaremail'] = orarec['ucaremail']
|
|
182
|
-
if 'phoneno' in orarec: newrec['phoneno'] = orarec['phoneno']
|
|
183
|
-
if 'faxno' in orarec: newrec['faxno'] = orarec['faxno']
|
|
184
|
-
return newrec if newrec else None
|
|
185
|
-
|
|
186
|
-
# main function to execute this script
|
|
187
|
-
def main():
|
|
188
|
-
object = FillUser()
|
|
189
|
-
object.read_parameters()
|
|
190
|
-
object.start_actions()
|
|
191
|
-
object.pgexit(0)
|
|
192
|
-
|
|
193
|
-
# call main() to start program
|
|
194
|
-
if __name__ == "__main__": main()
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
filluser - Fill or refresh records in the 'user' table from an Oracle source.
|
|
3
|
-
|
|
4
|
-
Retrieves user information from the NCAR ORACLE server and inserts or
|
|
5
|
-
updates records in the 'user' table of PostgreSQL database 'rdadb'.
|
|
6
|
-
|
|
7
|
-
USAGE:
|
|
8
|
-
filluser [-b] (-i | -n UserNumbers | -u UserLoginNames)
|
|
9
|
-
|
|
10
|
-
OPTIONS (choose exactly one of -i, -n, or -u):
|
|
11
|
-
|
|
12
|
-
-i Refresh users that currently have incomplete information in the
|
|
13
|
-
'user' table.
|
|
14
|
-
|
|
15
|
-
-n UserNumbers
|
|
16
|
-
Look up users by their NCAR system user numbers.
|
|
17
|
-
|
|
18
|
-
-u UserLoginNames
|
|
19
|
-
Look up users by their NCAR system login names.
|
|
20
|
-
|
|
21
|
-
-b Run in background mode (log to file only, no terminal output).
|
|
22
|
-
|
|
23
|
-
EXAMPLE:
|
|
24
|
-
filluser -u zji
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
#*******************************************************************
|
|
3
|
-
# Title : pgperson.py
|
|
4
|
-
# Author : Zaihua Ji, zji@ucar.edu
|
|
5
|
-
# Date : 2025-03-27
|
|
6
|
-
# Purpose : utility program to retrieve user info from People DB
|
|
7
|
-
#
|
|
8
|
-
# Github : https://github.com/NCAR/rda-python-metrics.git
|
|
9
|
-
#
|
|
10
|
-
#*******************************************************************
|
|
11
|
-
|
|
12
|
-
import httplib2
|
|
13
|
-
import json
|
|
14
|
-
import sys
|
|
15
|
-
from rda_python_common import PgLOG
|
|
16
|
-
|
|
17
|
-
PERSON = [
|
|
18
|
-
"upid", # Unique person id
|
|
19
|
-
"username", # UCAR login user name
|
|
20
|
-
"email", # Email address
|
|
21
|
-
"uid", # Scientist id or Unix id
|
|
22
|
-
"firstName", # First name
|
|
23
|
-
"lastName", # Last name
|
|
24
|
-
"forwardEmail" # Forward Email address
|
|
25
|
-
]
|
|
26
|
-
|
|
27
|
-
urlfmt="https://people.api.ucar.edu/persons?{}={}&searchScope=all&includeActive=true&includeInactive=true&searchType=advancedSearch"
|
|
28
|
-
|
|
29
|
-
#
|
|
30
|
-
# main function to execute this script
|
|
31
|
-
#
|
|
32
|
-
def main():
|
|
33
|
-
|
|
34
|
-
pgname = "pgperson"
|
|
35
|
-
argv = sys.argv[1:]
|
|
36
|
-
argc = len(sys.argv)
|
|
37
|
-
optstr = '|'.join(PERSON)
|
|
38
|
-
if argc != 3:
|
|
39
|
-
print("Usage: {} -({}) OptopnValue".format(pgname, optstr))
|
|
40
|
-
sys.exit(0)
|
|
41
|
-
|
|
42
|
-
option = optval = None
|
|
43
|
-
for arg in argv:
|
|
44
|
-
if option:
|
|
45
|
-
optval = arg
|
|
46
|
-
elif arg[0] == '-':
|
|
47
|
-
option = arg[1:]
|
|
48
|
-
if option not in PERSON:
|
|
49
|
-
PgLOG.pglog("{}: unknown option, must be -({})".format(arg, optstr), PgLOG.LGEREX)
|
|
50
|
-
else:
|
|
51
|
-
PgLOG.pglog("{}: Value passed in without leading option -({})".format(arg, optstr), PgLOG.LGEREX)
|
|
52
|
-
|
|
53
|
-
headers = {'Content-type': 'application/json'}
|
|
54
|
-
http=httplib2.Http()
|
|
55
|
-
url = urlfmt.format(option, optval)
|
|
56
|
-
response, content = http.request(url, 'GET', headers=headers)
|
|
57
|
-
status = response.status
|
|
58
|
-
if status == 200:
|
|
59
|
-
persons=json.loads(content)
|
|
60
|
-
for person in persons:
|
|
61
|
-
for key, value in person.items():
|
|
62
|
-
print("{}<=>{}".format(key, value))
|
|
63
|
-
elif status == 399:
|
|
64
|
-
print(content)
|
|
65
|
-
elif status == 500:
|
|
66
|
-
print('Server error')
|
|
67
|
-
|
|
68
|
-
sys.exit(0)
|
|
69
|
-
|
|
70
|
-
#
|
|
71
|
-
# call main() to start program
|
|
72
|
-
#
|
|
73
|
-
if __name__ == "__main__": main()
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
#*******************************************************************
|
|
3
|
-
# Title : pgusername.py
|
|
4
|
-
# Author : Zaihua Ji, zji@ucar.edu
|
|
5
|
-
# Date : 2025-03-27
|
|
6
|
-
# Purpose : utility program to retrieve user info from People DB
|
|
7
|
-
# for a given UCAR user login name
|
|
8
|
-
#
|
|
9
|
-
# Github : https://github.com/NCAR/rda-python-metrics.git
|
|
10
|
-
#
|
|
11
|
-
#*******************************************************************
|
|
12
|
-
|
|
13
|
-
import httplib2
|
|
14
|
-
import json
|
|
15
|
-
import sys
|
|
16
|
-
from rda_python_common import PgLOG
|
|
17
|
-
|
|
18
|
-
url="https://people.api.ucar.edu/usernames/"
|
|
19
|
-
|
|
20
|
-
#
|
|
21
|
-
# main function to execute this script
|
|
22
|
-
#
|
|
23
|
-
def main():
|
|
24
|
-
|
|
25
|
-
pgname = "pgusername"
|
|
26
|
-
argc = len(sys.argv)
|
|
27
|
-
if argc != 2:
|
|
28
|
-
print("Usage: {} UserName".format(pgname))
|
|
29
|
-
sys.exit(0)
|
|
30
|
-
|
|
31
|
-
uname = sys.argv[1]
|
|
32
|
-
|
|
33
|
-
headers = {'Content-type': 'application/json'}
|
|
34
|
-
http=httplib2.Http()
|
|
35
|
-
response, content = http.request(url + uname, 'GET', headers=headers)
|
|
36
|
-
status = response.status
|
|
37
|
-
if status == 200:
|
|
38
|
-
person=json.loads(content)
|
|
39
|
-
for key, value in person.items():
|
|
40
|
-
print("{}<=>{}".format(key, value))
|
|
41
|
-
elif status == 399:
|
|
42
|
-
print(content)
|
|
43
|
-
elif status == 500:
|
|
44
|
-
print('Server error')
|
|
45
|
-
|
|
46
|
-
sys.exit(0)
|
|
47
|
-
|
|
48
|
-
#
|
|
49
|
-
# call main() to start program
|
|
50
|
-
#
|
|
51
|
-
if __name__ == "__main__": main()
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
#*******************************************************************
|
|
3
|
-
# Title : pgperson.py
|
|
4
|
-
# Author : Zaihua Ji, zji@ucar.edu
|
|
5
|
-
# Date : 2025-03-27
|
|
6
|
-
# 2025-12-19 convert to class PgPerson
|
|
7
|
-
# Purpose : utility program to retrieve user info from People DB
|
|
8
|
-
# Github : https://github.com/NCAR/rda-python-metrics.git
|
|
9
|
-
#*******************************************************************
|
|
10
|
-
import httplib2
|
|
11
|
-
import json
|
|
12
|
-
import sys
|
|
13
|
-
|
|
14
|
-
class PgPerson:
|
|
15
|
-
|
|
16
|
-
def __init__(self):
|
|
17
|
-
super().__init__()
|
|
18
|
-
self.PERSON = [
|
|
19
|
-
"upid", # Unique person id
|
|
20
|
-
"username", # UCAR login user name
|
|
21
|
-
"email", # Email address
|
|
22
|
-
"uid", # Scientist id or Unix id
|
|
23
|
-
"firstName", # First name
|
|
24
|
-
"lastName", # Last name
|
|
25
|
-
"forwardEmail" # Forward Email address
|
|
26
|
-
]
|
|
27
|
-
self.urlfmt = "https://people.api.ucar.edu/persons?{}={}&searchScope=all&includeActive=true&includeInactive=true&searchType=advancedSearch"
|
|
28
|
-
self.option = self.optval = None
|
|
29
|
-
|
|
30
|
-
# function to read parameters
|
|
31
|
-
def read_parameters(self):
|
|
32
|
-
pgname = "pgperson"
|
|
33
|
-
argv = sys.argv[1:]
|
|
34
|
-
argc = len(sys.argv)
|
|
35
|
-
optstr = '|'.join(self.PERSON)
|
|
36
|
-
if argc != 3:
|
|
37
|
-
print("Usage: {} -({}) OptopnValue".format(pgname, optstr))
|
|
38
|
-
sys.exit(0)
|
|
39
|
-
for arg in argv:
|
|
40
|
-
if self.option:
|
|
41
|
-
self.optval = arg
|
|
42
|
-
elif arg[0] == '-':
|
|
43
|
-
self.option = arg[1:]
|
|
44
|
-
if self.option not in self.PERSON:
|
|
45
|
-
print("{}: unknown option, must be -({})".format(arg, optstr), file=sys.stderr)
|
|
46
|
-
else:
|
|
47
|
-
print("{}: Value passed in without leading option -({})".format(arg, optstr), file=sys.stderr)
|
|
48
|
-
|
|
49
|
-
# function to start actions
|
|
50
|
-
def start_actions(self):
|
|
51
|
-
headers = {'Content-type': 'application/json'}
|
|
52
|
-
http=httplib2.Http()
|
|
53
|
-
url = self.urlfmt.format(self.option, self.optval)
|
|
54
|
-
response, content = http.request(url, 'GET', headers=headers)
|
|
55
|
-
status = response.status
|
|
56
|
-
if status != 200:
|
|
57
|
-
print("pgperson: HTTP {} from {}\n{}".format(status, url, content.decode(errors='replace')), file=sys.stderr)
|
|
58
|
-
sys.exit(1)
|
|
59
|
-
persons=json.loads(content)
|
|
60
|
-
for person in persons:
|
|
61
|
-
for key, value in person.items():
|
|
62
|
-
print("{}<=>{}".format(key, value))
|
|
63
|
-
|
|
64
|
-
# main function to execute this script
|
|
65
|
-
def main():
|
|
66
|
-
object = PgPerson()
|
|
67
|
-
object.read_parameters()
|
|
68
|
-
object.start_actions()
|
|
69
|
-
sys.exit(0)
|
|
70
|
-
|
|
71
|
-
# call main() to start program
|
|
72
|
-
if __name__ == "__main__": main()
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
#*******************************************************************
|
|
3
|
-
# Title : pgusername.py
|
|
4
|
-
# Author : Zaihua Ji, zji@ucar.edu
|
|
5
|
-
# Date : 2025-03-27
|
|
6
|
-
# 2025-12-19 convert to class PgUserName
|
|
7
|
-
# Purpose : utility program to retrieve user info from People DB
|
|
8
|
-
# for a given UCAR user login name
|
|
9
|
-
# Github : https://github.com/NCAR/rda-python-metrics.git
|
|
10
|
-
#*******************************************************************
|
|
11
|
-
import httplib2
|
|
12
|
-
import json
|
|
13
|
-
import sys
|
|
14
|
-
|
|
15
|
-
class PgUserName:
|
|
16
|
-
|
|
17
|
-
def __init__(self):
|
|
18
|
-
super().__init__()
|
|
19
|
-
self.url="https://people.api.ucar.edu/usernames/"
|
|
20
|
-
self.uname = None
|
|
21
|
-
|
|
22
|
-
# function to read parameters
|
|
23
|
-
def read_parameters(self):
|
|
24
|
-
pgname = "pgusername"
|
|
25
|
-
argc = len(sys.argv)
|
|
26
|
-
if argc != 2:
|
|
27
|
-
print("Usage: {} UserName".format(pgname))
|
|
28
|
-
sys.exit(0)
|
|
29
|
-
self.uname = sys.argv[1]
|
|
30
|
-
|
|
31
|
-
# function to start actions
|
|
32
|
-
def start_actions(self):
|
|
33
|
-
headers = {'Content-type': 'application/json'}
|
|
34
|
-
http=httplib2.Http()
|
|
35
|
-
url = self.url + self.uname
|
|
36
|
-
response, content = http.request(url, 'GET', headers=headers)
|
|
37
|
-
status = response.status
|
|
38
|
-
if status != 200:
|
|
39
|
-
print("pgusername: HTTP {} from {}\n{}".format(status, url, content.decode(errors='replace')), file=sys.stderr)
|
|
40
|
-
sys.exit(1)
|
|
41
|
-
person=json.loads(content)
|
|
42
|
-
for key, value in person.items():
|
|
43
|
-
print("{}<=>{}".format(key, value))
|
|
44
|
-
|
|
45
|
-
# main function to execute this script
|
|
46
|
-
def main():
|
|
47
|
-
object = PgUserName()
|
|
48
|
-
object.read_parameters()
|
|
49
|
-
object.start_actions()
|
|
50
|
-
sys.exit(0)
|
|
51
|
-
|
|
52
|
-
# call main() to start program
|
|
53
|
-
if __name__ == "__main__": main()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_awsusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_cdgusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_codusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_country.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_endtime.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_globususage.py
RENAMED
|
File without changes
|
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_oneorder.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_osdfusage.py
RENAMED
|
File without changes
|
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fill_tdsusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillawsusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillawsusage.usg
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillcdgusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillcdgusage.usg
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillcodusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillcodusage.usg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillgdexusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillgdexusage.usg
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillglobususage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillglobususage.usg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/filloneorder.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/filloneorder.usg
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillosdfusage.usg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/filltdsusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/filltdsusage.usg
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillzenodousage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/fillzenodousage.usg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_allusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_awsusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_checkusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_codusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_ordusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_osdfusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_rqstusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_tdsusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_webfile.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/view_webusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewallusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewallusage.usg
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewawsusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewawsusage.usg
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewcheckusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewcheckusage.usg
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewcodusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewcodusage.usg
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewordusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewordusage.usg
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewosdfusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewosdfusage.usg
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewrqstusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewrqstusage.usg
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewtdsusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewtdsusage.usg
RENAMED
|
File without changes
|
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewwebfile.usg
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewwebusage.py
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics/viewwebusage.usg
RENAMED
|
File without changes
|
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics.egg-info/requires.txt
RENAMED
|
File without changes
|
{rda_python_metrics-3.0.4 → rda_python_metrics-3.0.6}/src/rda_python_metrics.egg-info/top_level.txt
RENAMED
|
File without changes
|