rda-python-common 1.0.2__tar.gz → 1.0.5__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.
Potentially problematic release.
This version of rda-python-common might be problematic. Click here for more details.
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/PKG-INFO +1 -1
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/pyproject.toml +2 -1
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgDBI.py +36 -14
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgLOG.py +20 -20
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common.egg-info/PKG-INFO +1 -1
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/LICENSE +0 -0
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/README.md +0 -0
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/setup.cfg +0 -0
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgCMD.py +0 -0
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgFile.py +0 -0
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgGLBS.py +0 -0
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgLock.py +0 -0
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgOPT.py +0 -0
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgPGS.py +0 -0
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgSIG.py +0 -0
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgSplit.py +0 -0
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/PgUtil.py +0 -0
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common/__init__.py +0 -0
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common.egg-info/SOURCES.txt +0 -0
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common.egg-info/dependency_links.txt +0 -0
- {rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: rda_python_common
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.5
|
|
4
4
|
Summary: RDA Python common library codes shared by other RDA python packages
|
|
5
5
|
Author-email: Zaihua Ji <zji@ucar.edu>
|
|
6
6
|
Project-URL: Homepage, https://github.com/NCAR/rda-python-common
|
|
@@ -37,9 +37,11 @@ CHCODE = 1042
|
|
|
37
37
|
|
|
38
38
|
# hard coded db ports for dbnames
|
|
39
39
|
DBPORTS = {
|
|
40
|
-
'default' :
|
|
40
|
+
'default' : 5432
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
DBPASS = {}
|
|
44
|
+
|
|
43
45
|
# hard coded db names for given schema names
|
|
44
46
|
DBNAMES = {
|
|
45
47
|
'ivaddb' : 'ivaddb',
|
|
@@ -79,7 +81,6 @@ fmthr = lambda fn: "extract(hour from {})::int".format(fn)
|
|
|
79
81
|
def SETPGDBI(name, value):
|
|
80
82
|
PGDBI[name] = PgLOG.get_environment(name, value)
|
|
81
83
|
|
|
82
|
-
SETPGDBI('CDHOST', 'rda-db.ucar.edu') # common domain for db host for master server
|
|
83
84
|
SETPGDBI('DEFDB', 'rdadb')
|
|
84
85
|
SETPGDBI("DEFSC", 'dssdb')
|
|
85
86
|
SETPGDBI('DEFHOST', PgLOG.PGLOG['PSQLHOST'])
|
|
@@ -88,7 +89,7 @@ SETPGDBI("DEFSOCK", '')
|
|
|
88
89
|
SETPGDBI("DBNAME", PGDBI['DEFDB'])
|
|
89
90
|
SETPGDBI("SCNAME", PGDBI['DEFSC'])
|
|
90
91
|
SETPGDBI("LNNAME", PGDBI['DEFSC'])
|
|
91
|
-
SETPGDBI("PWNAME",
|
|
92
|
+
SETPGDBI("PWNAME", None)
|
|
92
93
|
SETPGDBI("DBHOST", (os.environ['DSSDBHOST'] if os.environ.get('DSSDBHOST') else PGDBI['DEFHOST']))
|
|
93
94
|
SETPGDBI("DBPORT", 0)
|
|
94
95
|
SETPGDBI("ERRLOG", PgLOG.LOGERR) # default error logact
|
|
@@ -242,12 +243,12 @@ def set_scname(dbname = None, scname = None, lnname = None, pwname = None, dbhos
|
|
|
242
243
|
PGDBI['DBNAME'] = dbname
|
|
243
244
|
changed = 1
|
|
244
245
|
if scname and scname != PGDBI['SCNAME']:
|
|
245
|
-
PGDBI['
|
|
246
|
+
PGDBI['LNNAME'] = PGDBI['SCNAME'] = scname
|
|
246
247
|
changed = 1
|
|
247
248
|
if lnname and lnname != PGDBI['LNNAME']:
|
|
248
|
-
PGDBI['
|
|
249
|
+
PGDBI['LNNAME'] = lnname
|
|
249
250
|
changed = 1
|
|
250
|
-
if pwname
|
|
251
|
+
if pwname != PGDBI['PWNAME']:
|
|
251
252
|
PGDBI['PWNAME'] = pwname
|
|
252
253
|
changed = 1
|
|
253
254
|
if dbhost and dbhost != PGDBI['DBHOST']:
|
|
@@ -475,7 +476,8 @@ def pgbatch(sqlfile, foreground = 0):
|
|
|
475
476
|
|
|
476
477
|
dbhost = 'localhost' if PGDBI['DBSHOST'] == PgLOG.PGLOG['HOSTNAME'] else PGDBI['DBHOST']
|
|
477
478
|
options = "-h {} -p {}".format(dbhost, PGDBI['DBPORT'])
|
|
478
|
-
|
|
479
|
+
pwname = get_pgpass_password()
|
|
480
|
+
os.environ['PGPASSWORD'] = pwname
|
|
479
481
|
options += " -U {} {}".format(PGDBI['LNNAME'], PGDBI['DBNAME'])
|
|
480
482
|
|
|
481
483
|
if not sqlfile: return options
|
|
@@ -506,20 +508,16 @@ def pgconnect(reconnect = 0, pgcnt = 0, autocommit = True):
|
|
|
506
508
|
elif reconnect:
|
|
507
509
|
reconnect = 0 # initial connection
|
|
508
510
|
|
|
509
|
-
# if PGDBI['VWHOST'] and PGDBI['VWHOME'] and PGDBI['DBSHOST'] == PGDBI['VWSHOST'] and PGDBI['SCNAME'] == PGDBI['VWNAME']:
|
|
510
|
-
# slave = "/{}/{}.slave".format(PGDBI['VWHOME'], PGDBI['VWHOST'])
|
|
511
|
-
# if not op.exists(slave): default_scname()
|
|
512
|
-
|
|
513
511
|
while True:
|
|
514
512
|
config = {'database' : PGDBI['DBNAME'],
|
|
515
|
-
'user' : PGDBI['LNNAME']
|
|
516
|
-
'password' : PGDBI['PWNAME']}
|
|
513
|
+
'user' : PGDBI['LNNAME']}
|
|
517
514
|
if PGDBI['DBSHOST'] == PgLOG.PGLOG['HOSTNAME']:
|
|
518
515
|
config['host'] = 'localhost'
|
|
519
516
|
else:
|
|
520
|
-
config['host'] = PGDBI['DBHOST'] if PGDBI['DBHOST'] else PGDBI['
|
|
517
|
+
config['host'] = PGDBI['DBHOST'] if PGDBI['DBHOST'] else PGDBI['DEFHOST']
|
|
521
518
|
if not PGDBI['DBPORT']: PGDBI['DBPORT'] = get_dbport(PGDBI['DBNAME'])
|
|
522
519
|
if PGDBI['DBPORT']: config['port'] = PGDBI['DBPORT']
|
|
520
|
+
config['password'] = get_pgpass_password()
|
|
523
521
|
|
|
524
522
|
sqlstr = "psycopg2.connect(**{})".format(config)
|
|
525
523
|
if PgLOG.PGLOG['DBGLEVEL']: PgLOG.pgdbg(1000, sqlstr)
|
|
@@ -2216,3 +2214,27 @@ def pgname(str, sign = None):
|
|
|
2216
2214
|
nstr = '"{}"'.format(nstr)
|
|
2217
2215
|
|
|
2218
2216
|
return nstr
|
|
2217
|
+
|
|
2218
|
+
#
|
|
2219
|
+
# get a postgres password for given host, port, dbname, usname
|
|
2220
|
+
#
|
|
2221
|
+
def get_pgpass_password():
|
|
2222
|
+
|
|
2223
|
+
if PGDBI['PWNAME']: return PGDBI['PWNAME']
|
|
2224
|
+
if not DBPASS: read_pgpass()
|
|
2225
|
+
return DBPASS.get((PGDBI['DBSHOST'], PGDBI['DBPORT'], PGDBI['DBNAME'], PGDBI['LNNAME']))
|
|
2226
|
+
|
|
2227
|
+
#
|
|
2228
|
+
# Reads the .pgpass file and returns a dictionary of credentials.
|
|
2229
|
+
#
|
|
2230
|
+
def read_pgpass():
|
|
2231
|
+
|
|
2232
|
+
try:
|
|
2233
|
+
with open(PgLOG.PGLOG['DSSHOME'] + '/.pgpass', "r") as f:
|
|
2234
|
+
for line in f:
|
|
2235
|
+
line = line.strip()
|
|
2236
|
+
if not line or line.startswith("#"): continue
|
|
2237
|
+
dbhost, dbport, dbname, usname, pwname = line.split(":")
|
|
2238
|
+
DBPASS[(dbhost, dbport, dbname, usname)] = pwname
|
|
2239
|
+
except FileNotFoundError:
|
|
2240
|
+
pass
|
|
@@ -109,7 +109,7 @@ PGLOG = { # more defined in untaint_suid() with environment variables
|
|
|
109
109
|
'DSIDCHRS' : "d",
|
|
110
110
|
'DOSHELL' : False,
|
|
111
111
|
'NEWDSID' : True,
|
|
112
|
-
'BCHHOSTS' : "
|
|
112
|
+
'BCHHOSTS' : "PBS",
|
|
113
113
|
'HOSTTYPE' : 'dav', # default HOSTTYPE
|
|
114
114
|
'EMLMAX' : 256, # up limit of email line count
|
|
115
115
|
'PGBATCH' : '', # current batch service name, SLURM or PBS
|
|
@@ -1219,14 +1219,14 @@ def set_common_pglog():
|
|
|
1219
1219
|
PGLOG['NOTAROOT'] = '|'.join([PGLOG['OLDAROOT'], PGLOG['OLDBROOT'], PGLOG['BACKROOT']])
|
|
1220
1220
|
PGLOG['NOTBROOT'] = '|'.join([PGLOG['OLDAROOT'], PGLOG['OLDBROOT'], PGLOG['ARCHROOT']])
|
|
1221
1221
|
PGLOG['ALLROOTS'] = '|'.join([PGLOG['OLDAROOT'], PGLOG['OLDBROOT'], PGLOG['ARCHROOT'], PGLOG['BACKROOT']])
|
|
1222
|
-
SETPGLOG("USRHOME", "
|
|
1223
|
-
SETPGLOG("DSSHOME", "
|
|
1224
|
-
SETPGLOG("ADDPATH", "
|
|
1225
|
-
SETPGLOG("ADDLIB", "
|
|
1226
|
-
SETPGLOG("OTHPATH", "
|
|
1227
|
-
SETPGLOG("PSQLHOME", "
|
|
1228
|
-
SETPGLOG("DSGHOSTS", "
|
|
1229
|
-
SETPGLOG("DSIDCHRS", "
|
|
1222
|
+
SETPGLOG("USRHOME", "/glade/u/home")
|
|
1223
|
+
SETPGLOG("DSSHOME", "/glade/u/home/rdadata")
|
|
1224
|
+
SETPGLOG("ADDPATH", "")
|
|
1225
|
+
SETPGLOG("ADDLIB", "")
|
|
1226
|
+
SETPGLOG("OTHPATH", "")
|
|
1227
|
+
SETPGLOG("PSQLHOME", "/usr/pgsql-15")
|
|
1228
|
+
SETPGLOG("DSGHOSTS", "")
|
|
1229
|
+
SETPGLOG("DSIDCHRS", "d")
|
|
1230
1230
|
|
|
1231
1231
|
if not os.getenv('HOME'): os.environ['HOME'] = "{}/{}".format(PGLOG['USRHOME'], PGLOG['CURUID'])
|
|
1232
1232
|
SETPGLOG("HOMEBIN", os.environ.get('HOME') + "/bin")
|
|
@@ -1279,7 +1279,7 @@ def set_common_pglog():
|
|
|
1279
1279
|
SETPGLOG("PUSGDIR", PGLOG['DSSDBHM']+"/prog_usage") # path to program usage files
|
|
1280
1280
|
SETPGLOG("DSSURL", "https://rda.ucar.edu") # current dss web URL
|
|
1281
1281
|
SETPGLOG("RQSTURL", "/datasets/request") # request URL path
|
|
1282
|
-
SETPGLOG("WEBSERVERS", "
|
|
1282
|
+
SETPGLOG("WEBSERVERS", "rda-web-prod01.ucar.edu:rda-web-test01.ucar.edu") # webserver names for Web server
|
|
1283
1283
|
PGLOG['WEBHOSTS'] = PGLOG['WEBSERVERS'].split(':') if PGLOG['WEBSERVERS'] else []
|
|
1284
1284
|
SETPGLOG("DBMODULE", '')
|
|
1285
1285
|
SETPGLOG("LOCDATA", "/data")
|
|
@@ -1288,21 +1288,21 @@ def set_common_pglog():
|
|
|
1288
1288
|
SETPGLOG("DSSWEB", PGLOG['LOCDATA']+"/web")
|
|
1289
1289
|
SETPGLOG("DSWHOME", PGLOG['DSSWEB']+"/datasets") # datast web root path
|
|
1290
1290
|
PGLOG['HOMEROOTS'] = "{}|{}".format(PGLOG['DSSHOME'], PGLOG['DSWHOME'])
|
|
1291
|
-
SETPGLOG("DSSDATA", "
|
|
1291
|
+
SETPGLOG("DSSDATA", "/glade/campaign/collections/rda") # dss data root path
|
|
1292
1292
|
SETPGLOG("DSDHOME", PGLOG['DSSDATA']+"/data") # dataset data root path
|
|
1293
1293
|
SETPGLOG("DECSHOME", PGLOG['DSSDATA']+"/decsdata") # dataset decsdata root path
|
|
1294
1294
|
SETPGLOG("DSHHOME", PGLOG['DECSHOME']+"/helpfiles") # dataset help root path
|
|
1295
1295
|
SETPGLOG("UPDTWKP", PGLOG['DSSDATA']+"/work") # dsupdt work root path
|
|
1296
1296
|
SETPGLOG("TRANSFER", PGLOG['DSSDATA']+"/transfer") # dss transfer partition
|
|
1297
1297
|
SETPGLOG("RQSTHOME", PGLOG['TRANSFER']+"/dsrqst") # dsrqst home
|
|
1298
|
-
SETPGLOG("DSAHOME", "
|
|
1299
|
-
SETPGLOG("RQSTALTH", "
|
|
1300
|
-
SETPGLOG("GPFSHOST", "
|
|
1301
|
-
SETPGLOG("PSQLHOST", "
|
|
1302
|
-
SETPGLOG("SLMHOSTS", "
|
|
1303
|
-
SETPGLOG("PBSHOSTS", "
|
|
1304
|
-
SETPGLOG("CHKHOSTS", "
|
|
1305
|
-
SETPGLOG("PVIEWHOST", "
|
|
1298
|
+
SETPGLOG("DSAHOME", "") # dataset data alternate root path
|
|
1299
|
+
SETPGLOG("RQSTALTH", "") # alternate dsrqst path
|
|
1300
|
+
SETPGLOG("GPFSHOST", "") # empty if writable to glade
|
|
1301
|
+
SETPGLOG("PSQLHOST", "rda-db.ucar.edu") # host name for postgresql server
|
|
1302
|
+
SETPGLOG("SLMHOSTS", "cheyenne:casper") # host names for SLURM server
|
|
1303
|
+
SETPGLOG("PBSHOSTS", "cheyenne:casper") # host names for PBS server
|
|
1304
|
+
SETPGLOG("CHKHOSTS", "") # host names for dscheck daemon
|
|
1305
|
+
SETPGLOG("PVIEWHOST", "rda-pgdb-02.ucar.edu") # host name for view only postgresql server
|
|
1306
1306
|
SETPGLOG("FTPUPLD", PGLOG['TRANSFER']+"/rossby") # ftp upload path
|
|
1307
1307
|
PGLOG['GPFSROOTS'] = "{}|{}|{}".format(PGLOG['DSDHOME'], PGLOG['UPDTWKP'], PGLOG['RQSTHOME'])
|
|
1308
1308
|
|
|
@@ -1311,7 +1311,7 @@ def set_common_pglog():
|
|
|
1311
1311
|
os.environ['history'] = '0'
|
|
1312
1312
|
|
|
1313
1313
|
# set tmp dir
|
|
1314
|
-
SETPGLOG("TMPPATH", "
|
|
1314
|
+
SETPGLOG("TMPPATH", "/glade/campaign/collections/rda/work/ptmp")
|
|
1315
1315
|
if not PGLOG['TMPPATH']: PGLOG['TMPPATH'] = "/data/ptmp"
|
|
1316
1316
|
|
|
1317
1317
|
SETPGLOG("TMPDIR", '')
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: rda_python_common
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.5
|
|
4
4
|
Summary: RDA Python common library codes shared by other RDA python packages
|
|
5
5
|
Author-email: Zaihua Ji <zji@ucar.edu>
|
|
6
6
|
Project-URL: Homepage, https://github.com/NCAR/rda-python-common
|
|
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
|
{rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{rda_python_common-1.0.2 → rda_python_common-1.0.5}/src/rda_python_common.egg-info/top_level.txt
RENAMED
|
File without changes
|